面向对象09
多态:多种形态
-
意义:
- 对象的多态:同一个对象在造型为不同的数据类型时,能实现不同的功能(点出来什么,只看对象的数据类型),所有类都默认直接或间接继承Object类,所以所有对象都能向上造型,即所有对象都是多态的
- 行为的多态:同一类型的引用在指向不同对象时,有不同的实现(重写方法在调用时,只看对象类型),抽象方法必须被重写,即所有抽象方法都是多态的
-
向上造型(自动类型转换):就是多态
- 超类型(接口)的引用指向派生类(实现类)的对象
- 能造型的类型只有继承的父类和实现的所有接口(继承的传递性)
-
强制类型转换(向下转换):有条件
- 引用所指的对象自己的类型可以强转
- 引用所指的对象自己的类所继承的类或实现的接口(继承的传递性)
-
若强转类型不符合,报ClassCastException类型转换异常
通常,在类型转换之前,使用instanceof判断能否强转
强转的作用:造型后能点出来的方法和属性有限,强转后访问更多的行为和方法
public class MultiTypeDemo { 补充: 1. 体会接口的好处: public static void main(String[] args) { //条件1:引用所指向的对象,就是该类型 //条件2:引用所指向的对象,实现了该接口或继承了该类 Aoo o = new Boo(); //向上造型 Boo o1 = (Boo)o; //引用o所指向的对象,就是Boo类型--------满足条件1 Inter o2 = (Inter)o; //引用o所指向的对象,实现了Inter接口----满足条件2 //Coo o3 = (Coo)o; //运行时会发生ClassCastException类型转换异常 if(o instanceof Coo){ Coo o4 = (Coo)o } else{ System.out.println("o不是Coo类型"); } } } interface Inter{ } class Aoo{ } class Boo extends Aoo implements Inter{ } class Coo extends Aoo{ }