解决多态在调用时,子类新增的内容不可见问题
2、用法向上转型(自动转换):子类装作父类的样子,去干父类中的方法功能
向下转型:父类引用 转为对应的子类类型
向下转型会遇到的问题:ClassCastException:类型转换异常,是因为在向下转换时,会转换为非其他子类类型,没有对应上
解决此问题:instanceof 运算符:避免在转型的时候出现循转换异常,所以在转型前先判断
格式: 引用 instanceof 类型 用于判断前面的引用是否是指向后面类型的对象
如果是,返回true,不是返回false
抽象类 1、定义被abstract修饰的类,叫抽象类。 被abstract修饰的方法,叫抽象方法
2、特点1)抽象类不能实例化
2)在抽象类中,可以定义抽象方法,也可以定义其他普通类中所具有的各种内容
3)抽象类的使用:
具体子类:需要重写所有的抽象方法,并且按需增加
抽象子类:按需重写抽象方法,并且按需增加
4)一个抽象方法一旦被重写,其后续的子类中可以不用再进行重写,可以按需重写
5)抽象方法不能被直接被调用,需要通过具体子类和抽象子类进行重写方法调用
6)abstract不能与static、pratice、final、native一起使用
接口 1、定义接口是一种特殊的抽象类,是一个引用数据类型,是抽象功能的集合
类是单继承机制的,接口是多实现机制 并且定义了开发的规范,从而降低耦合度
2、使用方法1)通过 interface 来定义接口
接口 -> 通过 implements 来实现接口
继承 -> 通过 extends 来继承父类
2)继承和实现的区别:
子类继承父类后,就有权使用父类中的成员
实现类实现接口后,实现类就拥有了接口定义的功能,但是功能都是抽象的,没有方法体,需要实现类自己去实现
在jdk1.7及之前
1.在定义公共的静态的常量时,其中 public static final 可以省略
2.在定义公共的抽象的方法时,其中 public abstract 可以省略
在jdk1.8及之后
可以定义静态方法和默认方法
1.静态方法:只能通过接口名进行调用,不能通过实现类对象进行调用
2.默认方法:被default关键字修饰的方法,只能通过实现类对象进行调用
3、注意事项1)接口不能实例化,因为接口是特殊的抽象类
2)需要通过实现类实现接口调用
具体的实现类:需要重写所有的抽象方法,并按需进行添加
抽象的实现类:按需重写抽象方法,并按需进行添加
3)类只能被类而继承,接口只能被类实现
4)类只能单继承父类,但是可以实现多个接口
5)继承和接口的顺序时:先继承父类,再实现接口
6)一个接口可以继承多个接口
7)应当避免在实现的多个接口中,存在相同的方法



