4.45 多态中向上转型和向下转型

/*
多态的弊端:
	不能使用子类的特有功能。
	
就想使用子类的特有功能?行不行?
	行。
	
怎么用呢?
	A:创建子类对象调用方法即可。(可以,但是很多时候不合理。而且,太占内存了)
	B:把父类的引用强制转换为子类的引用。(向下转型)
	
对象间的转型问题:
	向上转型:
		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();
		// f.method();

		// 创建子类对象
		// Zi z = new Zi();
		// z.show();
		// z.method();

		// 能够把子的对象赋值给父亲,那么能不能把父的引用赋值给子的引用呢?
		// 如果可以,但是如下
		Zi z = (Zi) f;
		z.show();
		z.method();
	}
}


你可能感兴趣的:(4.45 多态中向上转型和向下转型)