day14 多态与抽象
多态:相同的行为,不同的实现。
多态分为:静态多态和动态多态。
静态多态:在编译期即确定方法的实现和效果。——使用重载实现
动态多态:运行后才能确定方法的实现和执行效果。——使用动态绑定和重写实现
动态绑定技术:引用数据类型转换、instanceof关键字
引用数据类型转换:向上转型:父类的引用指向子类的对象。
向下转型:运行起来后,确实是本类引用指向本类对象或者指向子类对象,才能成功。
instanceof关键字:用于判断运行时对象的真正类型,判断对象是否是某个类的实例。返回true/false。
用法:对象 instanceof 类名
多态的应用:多态参数:就是方法的形参是一个引用的时候,该引用兼容的任何对象都可以传递给该方法。
多态集合:就是存放不同数据类型的集合。例如: Object[]
抽象(abstract):
当abstract修饰方法的时候,该方法为抽象方法,表示类有这个方法,该方法的实现由子类完成。
当abstract修饰类的时候,该类为抽象类,抽象类不能产生对象。
注意:1、有抽象方法的类一定是抽象类
2、抽象类不一定有抽象方法(语法允许)
3、抽象类除了用abstract修饰外,其它跟普通类一样,属性,构造(给子类用),已实现的方法等等。
4、子类在继承抽象类的时候,必须重写父类全部抽象方法,否则这个类也是抽象类。
abstract与final修饰类的比较:
abstract设计父类,不能产生对象,能继承。
final设计最终类,不能被继承,能产生对象。