我实际上正在寻找一般答案或链接到有关该主题的信息,但我认为这个问题最好用一个具体的例子来说明:
实施例。 1:
class Car {
}
class Sedan extends Car {
}
// ... etc. where 10+ classes will extend Car
实施例。 2:
class Car {
public enum CarId {
SEDAN,
COUPE,
// ...
}
public Car(CarId id) {
//...
}
}
假设在这种情况下,Sedan,Coupe等不会提供更多的复杂性(可能是一个可能会或可能不会为null的字段;也就是说,有些人会使用的字段,但其他字段不会)。
在什么情况下使用这些?问题的哪些具体特征将决定使用哪个? 具体来说,为什么你会使用第二个而不是第一个。我没有看到它如此含糊,它保证投票结果。问题不在于什么是继承或什么是枚举。提供投票的原因。
未能展示研究成果:
这是非常具体的,我问的唯一原因是因为我不能谷歌这个例子。如果这是原因,至少提供一个信息来源。
模糊:
这是非常具体的。
有用的:
我面临的情况可能同时使用两者。我可以使用一些关于我应该寻找的信息。
答案 0 :(得分:2)
这样想:
汽车是一个对象。在OOP中,Object具有状态(也称为属性/属性),行为。
使用类字段表示对象状态,使用方法表示对象行为。
现在,举个例子:汽车是一个对象,汽车的属性是名称,品牌,等等。 Car的行为将是applyBrakse(),accelarate(),...等。
所以我会创建Car对象,如下所示:
class Car {
private String name;
private String brand;
private String type;
// ...... other properties
// constructor, getter and setter methods
public void applyBrakes() {
// code to apply brakes
}
public void accelarate() {
// code to apply brakes
}
// ... other behavioral methods
}