-
多态:
-
表现:
-
同一个对象被造型为不同的类型时,有不同的功能
--对象的多态:我、你、水......------所有对象都是多态的(明天体会)
-
同一类型的引用指向不同的对象时,有不同的实现
--行为的多态:cut(),move(),getImage()--所有抽象方法都是多态的
-
-
向上造型/自动类型转换:--------------------代码复用
- 超类型的引用指向派生类的对象
- 能点出来什么,看引用的类型
- 能造型成为的数据类型有:超类+所实现的接口
-
强制类型转换,成功的条件只有如下两种:
- 引用所指向的对象,就是该类型
- 引用所指向的对象,实现了该接口或继承了该类
-
强转时若不符合如上条件,则发生ClassCastException类型转换异常
建议:在强转之前先通过instanceof来判断引用的对象是否是该类型
public class MultiTypeDemo { public static void main(String[] args) { Aoo o = new Boo(); Boo o1 = (Boo)o; //引用o所指向的对象,就是Boo类型 Inter o2 = (Inter)o; //引用o所指向的对象,实现了Inter接口 //Coo o3 = (Coo)o; //运行时ClassCastException类型转换异常 if(o instanceof Coo){ //false Coo o4 = (Coo)o; }else{ System.out.println("o不是Coo类型"); } /* System.out.println(o instanceof Boo); //true System.out.println(o instanceof Inter); //true System.out.println(o instanceof Coo); //false */ } } interface Inter{ } class Aoo{ } class Boo extends Aoo implements Inter{ } class Coo extends Aoo{ }
-
java 多态
最新推荐文章于 2024-10-27 15:49:02 发布