多态中的转型
A:向上转型
从子到父,父类引用指向子类对象
B:向下转型
从父到子,父类引用转为子类对象
/*
多态的弊端:
不能使用子类的特有功能。
我就想使用子类的特有功能?行不行?
行。
怎么用呢?两种方法
A方法:创建子类对象调用方法即可。(可以,但是很多时候不合理。而且,太占内存了)
//创建子类对象
Zi z = new Zi();
z.show();
z.method();
B方法:把父类的引用强制转换为子类的引用。(专业名词:向下转型)
Fu f = new Zi();
Zi z = (Zi)f;
z.show();
z.method();
对象间的转型问题:
向上转型:
Fu f = new Zi();
向下转型:
Zi z = (Zi)f; //要求该f必须是能够转换为Zi的。
*/
class Fu {
public void show() {
System.out.println("show fu");
}
}
class Zi extends Fu {
public void show() {
System.out.println("show zi");
}
public void method() {
System.out.println("method zi");
}
}
class DuoTaiDemo4 {
public static void main(String[] args) {
//测试
Fu f = new Zi();
f.show(); //show zi
//f.method();报错
//方法一:创建子类对象
//Zi z = new Zi();
//z.show(); //show zi
//z.method(); //method zi
//你能够把子的对象赋值给父亲,那么我能不能把父的引用赋值给子的引用呢?
//方法二,如下:
Zi z = (Zi)f;
z.show(); //show zi
z.method();//method zi
}
}