继承私有值时如何制作复制构造函数?

How to make a copy constructor when inherited private values?

提问人:Malone2409 提问时间:6/26/2020 最后编辑:MC EmperorMalone2409 更新时间:6/26/2020 访问量:71

问:

我需要为大学的任务制作一个单位转换器。 因此,我们给出了以下代码:

public abstract class SIUnit {
    enum EUnitType {
        DISTANCE,
        MASS,
        TIME
    };

    private double value;

    private EUnitType unitType;

    public abstract void setDerivedValue(EUnitType newType, double newValue);

    public abstract double getDerivedValue();
}

因此,作为私有值给出的值。现在我们需要为 SIUnit 制作一些解释器。 第二个任务是创建一些具有 spezized unittypes 以及构造函数和复制构造函数的类 我的问题是,如果我所有的参数都是私有的,如何制作复制构造函数?

Java 继承 复制构造函数

评论

0赞 Brian McCutchon 6/26/2020
也许调用setDerivedValue?
0赞 Malone2409 6/26/2020
这是用于单位转换的
1赞 Betlista 6/26/2020
您可以在类中使用类字段,所以我没有看到问题?你能解释更多吗?
1赞 ThisIsNoZaku 6/26/2020
您只是想实现 SIUnit 的构造函数吗?如果是这样,提及子类的创建不会增加任何内容。
0赞 MC Emperor 6/26/2020
类本身可以访问自己的所有值,而不管它们在哪个实例上被调用。

答:

0赞 alex_ashwood 6/26/2020 #1

在 Java 中,您可以访问私有参数,因为复制构造函数位于同一类中。因此,对于您的复制构造函数,它看起来像这样:

public SIUnit(SIUnit inUnit){
    value = inUnit.value;
    unitType = inUnit.unitType;
    //Same thing for the rest of the instance variables
}

评论

0赞 Betlista 6/26/2020
在 Java 中,没有什么比“复制构造函数”更重要了,我的意思是它并不特别。不仅可以从构造函数访问私有字段 - 如果不是类本身,谁能够使用这些字段?
0赞 alex_ashwood 6/26/2020
这是真的 - 我不是特指复制构造函数,而只是在类中。我认为提出原始问题是因为新实例不仅访问自己的值,而且还访问位于单独实例中的值。我会更新我的答案,让它更清楚一点。