我对接口和继承如何在实现阶段工作感到困惑。这里有一个快速的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'的那个。 –