1.abstract关键字的使用:
使用对象:
①修饰类:抽象类 →无法实例化
说明:抽象类中不一定有抽象方法,但一定有构造器
②修饰方法:抽象方法
说明:含有抽象方法的类一定是抽象类,抽象类中不一定含有抽象方法
子类继承抽象父类必须重写父类的抽象方法/该子类就是个抽象类
2.interface关键字的使用:无法实现实例化
jdk7之前接口的内部定义:
①全局常量:public static final 可以省略,不可修改
②抽象方法:public可以省略
jdk8之后:
①全局常量
调用:1.接口名.全局常量名 2.对象.全局常量名
②抽象方法
③静态方法:
调用:接口名.静态方法名
④默认方法
调用:对象.默认方法名
可以被子类重写
在实现类中如果想要调用接口的默认方法:
接口名.super.默认方法名
特殊情况:
1.子类中未重写父类、接口中的同名同参方法时,默认调用的是父类的同名同参方法(类优先原则)
2.子类重写了父类、接口中的同名同参方法,调用的是子类重写的同名同参方法
答案:x有歧义
默认将Playbale、Bounceable中的play方法重写了,在Rollable中声明的对象ball是常量→地址不可更改