英文長得很像,常常不小心搞混
Overloading
多載,在相同類別中,定義名稱相同,但引數個數不同或引數型態不同的函式
Overriding
覆寫,子類別繼承父類別,但是改寫父類別的方法,方法的名稱、引數和型態都必須相同
##ShowAll##
2010年6月28日 星期一
2009年12月22日 星期二
JAVA筆記-多個繼承時,使用型別轉換要注意
進行物件型別轉換時,多個繼承容易撰寫錯誤,
未避免執行風險,加上instanceof判斷式
未避免執行風險,加上instanceof判斷式
class Animal extends Organism{...}
class Mammalian extends Animal{...}
Animal animal = null;
if(new Mammalian() instanceof Animal){
animal = (Animal)new Mammalian();
}
##ShowAll##
2009年12月9日 星期三
JAVA筆記-instanceof多型使用方法
用不同型別的宣告,建立繼承物件的實體,
使用的是實做物件的函式與屬性
##ReadMore##
使用的是實做物件的函式與屬性
##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是用來判斷某個類別是否實作了某個介面
*********************/
}
}
訂閱:
文章
(
Atom
)