-
同一个对象被造型为不同的类型时,有不同的功能——-所有对象都是多态的(明天总结详细讲)
-
对象的多态:水、我、你……
同一类型的引用在指向不同的对象时,有不同的实现—-所有抽象方法都是多态的
-
行为的多态:cut()、getImage()、move()……
-
强转时若不满足如上条件,则发生ClassCastException类型转换异常 建议:在强转之前先通过instanceof来判断引用指向的对象是否是该类型
说明:instanceof会返回true或false的结果 如果满足强转成功的条件则返回true,否则返回false 何时需要强转:向上造型后,若想访问的东西在超类中没有,则需要强转
public class MultiTypeDemo {
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){ //false
Coo o4 = (Coo)o;
}else{
System.out.println("o不是Coo类型");
}
}
}
interface Inter{ }
class Aoo{ }
class Boo extends Aoo implements Inter{ }
class Coo extends Aoo{ }
Original: https://www.cnblogs.com/Bafanqwq/p/16566647.html
Author: 八幡qwq
Title: 面向对象ooDay9
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685702/
转载文章受原作者版权保护。转载请注明原作者出处!