多态
多态的概念:同一个实现接口,使用不同的实例二执行不同的操作。
几种实现方式:
一、子类到父类的转换(向上转型)
1.将一个父类的引用指向一个子类对象,成为向上转型(upcasting),自动进行类型转换。
2.通过父类的引用变量调用的方法是子类覆盖或继承父类的方法,不是原本父类的方法。
3.通过父类引用变量无法调用子类特有的方法。
eg:使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态
实现多态的三个条件:
1.有继承的存在(继承是多态的基础,没有继承就没有多态)
2.子类重写父类的方法(多态下调用子类重写父类之后的方法)
3.父类引用变量指向子类对象(子类到父类的类型转换)
二、父类到子类的转换(向下转换)
概念:将一个指向子类对象的父类引用赋给一个子类的引用,成为向下转型,此时必须进行强制类型转换。
使用情况:当需要调用子类特有的方法时使用。
同时会使用 instanceof 运算符来判断对象的类型。
instanceof 运算符:
该运算符用来判断一个对象是否属于一个类或实现一个借口,返回布尔值。(使用instanceof时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系)。
instanceof 通常和强制转换类型转换结合使用。