→ luckyshin: Sony要改成sony 09/26 16:57
→ s9209122222: 您真是太神了!眼睛看到脫窗沒發現 09/26 17:00
那個介面到底是有什麼實際用途呢,看了課本範例:
interface IArea {
void area();
}
class Circle implements IArea{
public void area(){...}
}
這樣子和下面這到底差在哪邊?
class Circle{
public void area(){...}
}
感覺抽象類別和介面很多此一舉啊!現在我只能夠死記有這種寫法﹍
有神人可以開導我嗎?感謝
推 luckyshin: 跟Polymorphism有關, 然後也可以拿來實現多重繼承 09/26 17:21
我現在正是在看介面和多形這邊,但是就算他們繼承了也還是要自己打一遍啊,譬如:
interface A{
void A();
}
class B implements A{
public void A(BBB);
}
class C implements A{
public void A(CCC);
}
那我有沒有加那個interface做的事情不是都一樣嗎?
同理,抽象類別同樣讓我有這種感覺﹍,還是說他們只是概念上的用途?
※ 編輯: s9209122222 (122.117.207.31), 09/26/2015 17:31:38
推 LPH66: 當某個函式需要一個物件有某個函式時 09/26 17:48
→ LPH66: 宣告「我收一個有某函式的物件」這件事即是靠 interface 09/26 17:48
→ LPH66: 以 IArea 跟 Circle 的例子, 一個函式宣告它收 IArea 物件 09/26 17:49
→ LPH66: 即表示它期望傳進來的物件有 area() 函式可以用 09/26 17:49
→ LPH66: 那當你不只有 Circle 實作 IArea 時, 其他實作的 class 09/26 17:50
→ LPH66: 的物件也能交給目標函式使用 09/26 17:50
→ LPH66: 這就是 interface 這東西的精神: "物件要提供的介面" 09/26 17:51
→ LPH66: (這也是為什麼它會叫做 interface 介面的原因) 09/26 17:51
→ LPH66: 介面跟抽象類別的差別在於介面只宣告我要有什麼介面 09/26 17:52
→ LPH66: 抽象類別除介面外可能提供某幾個介面有預設行為 09/26 17:52
→ s9209122222: 好像有點了解了,感謝 09/26 17:54
→ s9209122222: 那各位在寫程式的時候都是先定好interface後再寫其他 09/26 17:55
→ s9209122222: 的嗎? 09/26 17:55
→ ah7675: interface == abstract class without properties 09/27 16:56