使用子类与使用标识字段或静态常量

时间:2012-12-29 04:38:57

标签: java inheritance

我实际上正在寻找一般答案或链接到有关该主题的信息,但我认为这个问题最好用一个具体的例子来说明:

实施例。 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的字段;也就是说,有些人会使用的字段,但其他字段不会)。

在什么情况下使用这些?问题的哪些具体特征将决定使用哪个? 具体来说,为什么你会使用第二个而不是第一个。我没有看到它如此含糊,它保证投票结果。问题不在于什么是继承或什么是枚举。提供投票的原因。

未能展示研究成果:
这是非常具体的,我问的唯一原因是因为我不能谷歌这个例子。如果这是原因,至少提供一个信息来源。

模糊:
这是非常具体的。

有用的:
我面临的情况可能同时使用两者。我可以使用一些关于我应该寻找的信息。

1 个答案:

答案 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

}