我對接口和繼承如何在實現階段工作感到困惑。這裏有一個快速的ERD:實現接口和繼承
<<interface>>
Animal IColorChangable
---------------------------- -----------------------
-color: int -----------------------
---------------------------- + changeColor()
---------------------------- -----------------------
^(Inheritance Triangle) ^(Interface Triangle)
| |
| |
----------------------------------------------
Dog
----------------------------
-breed: string
----------------------------
+ getBreed()
----------------------------
所以在這裏我有一隻狗延長動物類,並且還實現了一個ColorChangable接口。現在,colorchangeable界面的工作是更新顏色,這是屬於動物的屬性,而不是Dog。那麼更新狗類顏色的正確方法是什麼?它是實現變色的狗,而不是動物。現在,我有這樣的:
public class Dog extends Animal implements IColorChangable
{
private String breed;
public Dog(int color, String breed)
{
super(color);
this.breed = breed;
}
public void changeColor()
{
//How to have access to color?
}
}
public interface IColorChangable
{
public void changeColor();
}
非常真實,但不是問題? – KJ3
對不起,我編輯了它。 –
'setColor'和'getColor'不一定是'public',如果它更適合這種情況,它們可以被'保護'。另外值得注意的是,讓吸氣劑通常具有很大的意義,但它不是必需的。在更深層次上,如果'Animal'具有'color',則可能值得考慮如果'Animal'應該是實現'IColorChangable'的那個。 –