多态
(1)意义:
-
1.1)同一类型的引用,在指向不同的对象时,有不同的实现 ——行为多态
1.2)同一个对象,被造型为不同的类型时,有不同的功能 ——对象的多态
(2)向上造型
-
2.1)超类型的引用指向派生类的对象
2.2)能造型成为的类型有:超类+所实现的接口
2.3)能点出来声明,看引用的类型
(3)强制类型转换
-
成功的条件只有如下两种:
3.1)引用所指向的对象,就是该类型
3.2)引用所指向的对象,继承了该类或实现了该接口
(4)
-
强转时若不符合如上条件,则发生ClassCastException类型转换异常
建议:在强转之前先通过instanceof判断引用指向的对象是否是该类型
public class MultiTypeDemo {
public static void main(String[] args) {
Aoo o = new Boo();
Boo o1 = (Boo)o;
Inter1 o2 = (Inter1)o;
if(o instanceof Coo){
Coo o4 = (Coo)o;
}
}
}
interface Inter1{
}
class Aoo{
}
class Boo extends Aoo implements Inter1{
}
class Coo extends Aoo{
}