KJ3*_*KJ3 3 java inheritance constructor
我知道这是非常基本的,但我无法用一种不熟悉的语言拼凑起来.我正在将UML映射到Java代码,继承正在抛弃我.我有这样的ERD:
Animal
----------------------------
-color: int
-weight: int
----------------------------
+ getColor() : int
+ getWeight(): int
----------------------------
^(Inheritance Triangle)
|
|
----------------------------
Dog
----------------------------
-breed: string
----------------------------
+ getBreed()
----------------------------
Run Code Online (Sandbox Code Playgroud)
所以当然是狗IS-A动物,我可以从狗类等调用getColor.我的问题是关于变量,特别是构造函数.当我实施这个时,我有
public class Animal
{
private int color;
private int weight;
public Animal(int c, int w)
{
color = c;
weight = w;
}
...
}
public class Dog extends Animal
{
private string breed;
public Dog()
{
breed = "Shelty";
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在狗类中使用颜色和重量的正确方法是什么?看看UML,我知道我可以在dog实体中添加颜色和重量,但我知道这是可选的.我还会在狗类中拥有私人颜色和重量属性吗?我会调用Animal构造函数(抛出错误)这里的形式是什么?
该Dog班的责任应该是初始化任何新功能,它被加入,让超类初始化的所有属性Dog类继承.
你可以这样做:
public class Dog extends Animal
{
private String breed;
public Dog(int color, int weight, String breed)
{
super(color,weight); //let superclass initialize these.
this.breed = breed;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |