【发布时间】:2014-03-05 04:34:35
【问题描述】:
我对接口和继承在实现阶段的工作方式有些困惑。这是一个快速的 ERD:
<<interface>>
Animal IColorChangable
---------------------------- -----------------------
-color: int -----------------------
---------------------------- + changeColor()
---------------------------- -----------------------
^(Inheritance Triangle) ^(Interface Triangle)
| |
| |
----------------------------------------------
Dog
----------------------------
-breed: string
----------------------------
+ getBreed()
----------------------------
所以这里我有一只狗,它扩展了一个 Animal 类,并且还实现了一个 ColorChangable 接口。现在,colorchangeable 接口的工作是更新颜色,这是一个属于动物的属性,而不是狗。那么在狗类中更新颜色的正确方法是什么?实现变色的是狗,不是动物。现在我有这个:
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();
}
【问题讨论】:
标签: java oop inheritance interface