使用的是實做物件的函式與屬性
##ReadMore##
/******************
Animal: move()
Bird: move()
Cat: move()、skill()
Tiger: skill()
Bird、Cat繼承Animal
Tiger繼承Cat
*******************/
class Animal {
public void move() {
System.out.println("移動...");
}
}
class Cat extends Animal {
public void move() {
System.out.println("跑跑跳跳...");
}
public void skill() {
System.out.println("洗澡...");
}
}
class Bird extends Animal {
public void move() {
System.out.println("蹦蹦飛飛...");
}
}
class Tiger extends Cat {
public void skill() {
System.out.println("守獵...");
}
}
public class Zoo {
public static void main(String[] args) {
//ex1
Tiger a = new Tiger();
t.skill; //呼叫Tiger的method
t.move; //呼叫Tiger的method
//ex2
Cat c = new Tiger();
c.skill; //呼叫Tiger的method
c.move; //呼叫Tiger的method
//ex3
Animal a = new Tiger();
a.move; //呼叫Tiger的method
a.skill; //編譯錯誤
//Animal型別沒有skill(),無法使用Tiger的函式
/*********************
//ex4
Animal a = new Tiger();
((Tiger)a).skill; //呼叫Tiger的method
((Brid)a).move; //編譯正確
//但是Tiger並不是繼承Brid,執行時會錯誤
//必須加上條件式if(a instanceof Brid),傳回false則代表不可轉型
//instanceof是用來判斷某個類別是否實作了某個介面
*********************/
}
}
0 意見 :
張貼留言