上下轉型

package package1;

public class Demo10 {
public static void main(String[] args) {
	//父類的引用變量能夠引用其子類的對象
	Animal dog=new Dog("旺旺");//向上轉型首先是安全的,可能會致使子類方法丟失
	dog.eat();//父類的引用變量只能調用父類中有的方法或在子類中重寫父類的方法
	Animal cat=new Cat("招財貓");
	cat.eat();
	//向下轉型是不安全的
	if (cat instanceof Cat) {
		System.out.println("再次打印");
		Cat cat2=(Cat)cat;
		cat2.sleep();
	}
}
}
class Animal{
	private String name;
	public Animal(String name) {
		this.name=name;
	}
	//這是一個通用方法,通用方法沒有實現沒有意義,只是告訴子類去實現它
	public void eat() {
		
	}
}
class Dog extends Animal{

	public Dog(String name) {
		super(name);
	}
	public void eat() {
	System.out.println("啃骨頭");
	}
}
class Cat extends Animal{

	public Cat(String name) {
		super(name);
	}
	public void eat() {
	System.out.println("吃魚");
	}
	public void sleep() {
		System.out.println("睡覺");
	}
}
相關文章
相關標籤/搜索