定义接口使用interface修饰,实现接口使用implements修饰
接口的注意事项
1、接口不能创建对象
2、一个类实现多个接口,多个接口中有同样的静态方法不冲突
3、一个类继承了父类,同时又实现了接口,父类和接口中有同名的方法,默认用父类的
4、一个类实现了多个接口,多个接口中存在同名的默认方法,,不冲突,重写该方法即可
5、一个接口继承多个接口,是没有问题的,如果多给接口中存在规范冲突则不能多继承
定义接口,描述功能,用我接口必须写完功能
多态是什么:
同种类型的对象,执行同一个行为,会表现处不同的行为特征
多态的常见形式
父类类型 对象名称 = new 子类构造器
接口 对象名称 = new 实现类构造器
多态中访问成员的特点
方法调用:编译看左边,运行看右边
变量调用:编译看左边,运行也看左边 (多态侧重行为多态)
多态的前提
有继承关系/实现关系,有父类引用指向子类对象;有方法重写
多态的优势
在多态的形式下,右边对象可以实现解耦合,便于扩展和维护
定义方法的时候,使用父类作为参数,该方法可以接收这父类的一切子类对象,体现出多态的扩展性和便利
多态会产生的一个问题
多态下不能使用子类的独有功能
自动类型转换(子到父)子类对象赋值给父类类型的变量指向
强制类型转换(父到子)
此时必须进行强制类型转换:子类 对象变量 = (子类)父类类型变量
作用:可以解决多态下的劣势,可以实现调用子类独有的功能
注意:如果转型后的类型和对象的真实类型不是同一种类型,那么在转换的时候会出现ClassCastException错误
Java建议在强转前使用instanceof判断当前对象的真实类型在进行强制转换
变量名 instanceof 真实类型
判断关键字左边的变量是对象的真实类型,是否是右边的类型或者是其他类型,是则返回true 反之