Java之多態

/*
 * 多態
 * 一、多態是方法的多態,屬性沒有多態
 * 二、寫程序的時候,想要調用運行時類型的方法,只能進行強制轉換,不然沒法經過編譯器的檢查
 * 三、兩個沒有關聯的類進行轉換,會報「ClassCastException」
 * 四、多態存在的三個必要條件:繼承、方法重寫、父類應用指向子類對象
 */

package py.sxt.com;

public class OOP_4_22_04_duotai {
	public static void main(String[] args) {
		//向上自動轉型
		Animal ani = new Dog();
		//屬性調用的時候,任然是父類的屬性,屬性沒有多態
		System.out.println(ani.age);
		
		//運行時看對象,即父類引用指向子類對象
		animalCry(ani);
		
		//要調用對象的屬性,就須要進行強制類型轉化
		Dog dog = (Dog) ani;
		System.out.println(dog.age);
		
		System.out.println(dog instanceof Animal);
		System.out.println(ani instanceof Cat);
		System.out.println(ani instanceof Dog);
	}
	
	static void animalCry(Animal a) {
		a.shout();
	}
}

class Animal {
	int age = 10;

	public void shout () {
		System.out.println("叫了一聲。。");
	}
}

class Dog extends Animal {
	int age = 28;

	@Override
	public void shout() {
		// TODO Auto-generated method stub
		System.out.println("汪汪汪。。。");
	}
	
	public void gnawBone () {
		System.out.println("我在肯肉骨頭。。");
	}
}

class Cat extends Animal {
	int age = 18;
	
	@Override
	public void shout () {
		System.out.println("喵喵喵喵!");
	}
}
相關文章
相關標籤/搜索