-
多态:
-
意义:
-
同一个对象被造型为不同的类型时,有不同的功能
----对象的多态:我、你、水......-------------所有对象都是多态的(明天总结时详细讨论)
-
同一类型的引用在指向不同的对象时,有不同的实现
----行为的多态:cut()、getImage()、move()......-----所有抽象方法都是多态的
-
-
-
向上造型/自动类型转换:
-
超类型的引用指向派生类的对象
-
能点出来什么,看引用的类型
-
能造型成为的类型有:超类+所实现的接口
-
-
强制类型转换,成功的条件只有如下两种:
-
引用所指向的对象,就是该类型
-
引用所指向的对象,实现了该接口或继承了该类
-
-
强转时若不符合如上两个条件,则发生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类型");
}
}
}
interface Inter{
}
class Aoo{
}
class Boo extends Aoo implements Inter{
}
class Coo extends Aoo{
}