在接口的使用中一个实现类可以同时实现多个接口

public static 返回值类型 名称(参数列表) implement 接口a,接口b{
 方法体
}

注意事项:

  1. 如果两个接口存在同名方法,必须进行覆盖重写且只需要覆盖重写一次
  2. 如果父类和接口的方法出现冲突,有限使用父类的方法

接口之间可以多继承

  1. 如果多个父接口中的抽象方法重复,覆盖重写一次即可
  2. 如果是默认方法重复,则必须要对子接口的覆盖重写,且必须要带上default关键字

多态

  1. extends 和 implements 实现,是多态的前提
  2. 代码中体现多态性,其实就是父类引用指向子类对象

格式

父类名称 对象名 = new 子类名称();

或者

接口名称 对象名 = new 实现类名称();

通俗化说明:
大家都知道花木兰替父从军的例子,花木兰替父亲花弧从军。那么这时候花木兰是子类,花弧是父类。花弧有自己的成员属性年龄,姓名,性别。花木兰也有这些属性,但是很明显二者的属性完全不一样。花弧有自己的非静态成员方法‘骑马杀敌’,同样花木兰也遗传了父亲一样的方法‘骑马杀敌’。花弧还有一个静态方法‘自我介绍’,每个人都可以问花弧姓甚名谁。同时花木兰还有一个自己特有的非静态成员方法‘涂脂抹粉’。但是,现在花木兰替父从军,女扮男装。这时候相当于父类的引用(花弧这个名字)指向了子类对象(花木兰这个人),那么在其他类(其他的人)中访问子类对象(花木兰这个人)的成员属性(姓名,年龄,性别)时,其实看到的都是花木兰她父亲的名字(花弧)、年龄(60岁)、性别(男)。当访问子类对象(花木兰这个人)的非静态成员方法(骑马打仗)时,其实都是看到花木兰自己运用十八般武艺在骑马打仗。当访问花木兰的静态方法时(自我介绍),花木兰自己都是用她父亲的名字信息在向别人作自我介绍。并且这时候花木兰不能使用自己特有的成员方法‘涂脂抹粉’。-----多态中的向上转型
那么终于一将功成万骨枯,打仗旗开得胜了,花木兰告别了战争生活。有一天,遇到了自己心爱的男人,这时候爱情的力量将父类对象的引用(花弧这个名字)强制转换为子类对象本来的引用(花木兰这个名字),那么花木兰又从新成为了她自己,这时候她完全是她自己了。名字是花木兰,年龄是28,性别是女,打仗依然那样生猛女汉子,自我介绍则堂堂正正地告诉别人我叫花木兰。OMG!终于,终于可以使用自己特有的成员方法‘涂脂抹粉’了。从此,花木兰完全回到了替父从军前的那个花木兰了。并且和自己心爱的男人幸福的过完了一生。-----态中的向下转型


访问规则:

  1. 成员变量&静态方法:
    编译看左边(看左边有没有),运行看左边
  2. 非静态成员方法:
    编译看左边,运行看右边(看右边内容是啥)
  3. 多态向上转型无风险,向下转型必须原来就是那个类型。否则就会报错ClassCastException
  4. 可以通过instanceof关键字知道一个父类引用的对象,原来是什么子类

    对象 instanceof 类名称
    这个会返回一个布尔值,可以借此判断是否能够向下转型
最后修改:2021 年 01 月 26 日
如果觉得我的文章对你有用,请随意赞赏