【发布时间】:2023-03-08 21:58:01
【问题描述】:
我在面向对象编程的概念上遇到了麻烦。 扩展一个类还是在一个类中创建一个新对象更好? 在哪种情况下,您会扩展子类而不是在调用类中创建该子类的新实例?该示例使用 Java,但我想这些概念也适用于其他 OOP 语言。
感谢您的见解
class Mini {
// I want to use the members of this class in another class
int myInt;
public Mini(int myInt){
this.myInt = myInt;
}
public int myMethod(){
return this.myInt;
}
}
// should I create a new instance of Mini here?
class Maxi {
Mini myMini = new Mini(5);
public Maxi(){
int miniInt = myMini.myMethod();
System.out.print(miniInt );
}
}
// or should I have Maxi extend Mini?
class Maxi extends Mini {
public Maxi(int myInt){
System.out.print(this.myInt);
}
}
【问题讨论】:
-
这个问题似乎倾向于鼓励更多基于意见的答案,而不是严格客观的答案。通常,此类问题不适合 Stack Overflow。见:blog.stackoverflow.com/2010/09/good-subjective-bad-subjective
-
根据经验:如果您无需创建子类即可轻松实现目标,则不应创建子类。好吧,除非存在明显的“x 是 y”关系。
-
它们是两种截然不同的东西。扩展您创建“是”关系的类,即 Maxi 是 Mini 的一种。如果你在 Maxi 中实例化一个 Mnin,那么它就是一个“包含”关系......
-
@luke:没有。在大多数情况下,将“梅赛德斯”和“宝马”作为汽车品牌的实例就足够了。他们确实不为汽车的概念添加了一些新东西。这与制作“Car”的“RedCar”和“BlueCar”子类相同。不要这样做。