创建实例变量对象

时间:2016-01-08 06:04:20

标签: java object constructor

我是OOP的新手,我正在尝试使用HAS-A关系同时创建两个对象。我有一个Box对象,里面有一个Contents对象,我正在努力解决构造函数应如何处理它的问题。我的研究主要是在单个类中挖掘构造函数链的内容。 contents对象还从枚举中选择一个ContentsType:

盒:

public class Box {
    double volume;
    Contents contents;

    public Box(int inputVolume, String inputContInfo, ContentsType inputContType){
        this.volume = inputVolume;
        contents = new Contents(inputContInfo, inputContType);
    }
}

内容:

class Contents {
    ContentsType contType;
    String contInfo;

    Contents(String inputContInfo, ContentsType inputContType){
        this.contInfo = inputContInfo;
        this.contType = inputContType;
    }
}

ContentsType:

public enum ContentsType {
    CARGO,
    GIFT,
    OTHER;
}

上面的Box构造函数可以工作,但是这会破坏类的封装吗?这似乎不对,我想找到接受这种方法的方法。任何建议将不胜感激!

编辑: 我只是想从它的构造函数创建一个框,例如:

Box aBox = new Box(2, "Something", ContentsType.CARGO);

3 个答案:

答案 0 :(得分:2)

不,它没有打破类的封装。这可以是结构设计模式的一个示例,您可以在其中更改类的性质,而无需将类的实现暴露给客户端。

答案 1 :(得分:1)

确保您将字段设为私有 - 因为您不希望任何人直接修改这些值。除此之外,您的代码看起来很好。

答案 2 :(得分:0)

我不明白这段代码是如何打破封装的。由于您的研究是构造函数链接,因此这段代码非常好。否则我建议单独创建Box和Contents,并在Box类中提供一个Contents setter。