child class 的重载构造函数
Overloading constructor of child class
比如说我有一个 Circle
class:
static final double DEFAULT_RADIUS = 1.0;
Circle(Point centre, double radius) {
this.centre = centre;
this.radius = radius;
}
Circle(Point centre) {
this(centre, Circle.DEFAULT_RADIUS);
}
// ...
然后在ColoredCircle
中,一个child class of Circle
:
ColoredCircle(Point centre, Color color, double radius) {
super(centre, radius);
this.color = color;
}
ColoredCircle(Point centre, Color color) {
// ???
}
ColoredCircle
的第二个构造函数应该包含什么?
this(centre, color, Circle.DEFAULT_RADIUS);
super(centre, Circle.DEFAULT_RADIUS); this.color = color;
我认为两者都可以,但哪个会导致 "cleaner code"?
您的两个示例都有些多余,因为 Circle
已经有一个将半径设置为默认值的构造函数。
我建议你使用它,并像这样构造你的构造函数:
super(centre);
this.color = color;
比如说我有一个 Circle
class:
static final double DEFAULT_RADIUS = 1.0;
Circle(Point centre, double radius) {
this.centre = centre;
this.radius = radius;
}
Circle(Point centre) {
this(centre, Circle.DEFAULT_RADIUS);
}
// ...
然后在ColoredCircle
中,一个child class of Circle
:
ColoredCircle(Point centre, Color color, double radius) {
super(centre, radius);
this.color = color;
}
ColoredCircle(Point centre, Color color) {
// ???
}
ColoredCircle
的第二个构造函数应该包含什么?
this(centre, color, Circle.DEFAULT_RADIUS);
super(centre, Circle.DEFAULT_RADIUS); this.color = color;
我认为两者都可以,但哪个会导致 "cleaner code"?
您的两个示例都有些多余,因为 Circle
已经有一个将半径设置为默认值的构造函数。
我建议你使用它,并像这样构造你的构造函数:
super(centre);
this.color = color;