【问题标题】:How to make a copy constructor when inherited private values?继承私有值时如何创建复制构造函数?
【发布时间】:2020-06-26 02:31:45
【问题描述】:

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

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 创建一些构造函数。 第二个任务是创建一些具有指定单元类型以及构造函数和复制构造函数的类 我的问题是如果我的所有参数都是私有的,如何制作复制构造函数?

【问题讨论】:

  • 也许调用 setDerivedValue?
  • 这是用于单位转换的
  • 您可以在班级内使用班级字段,所以我没有看到问题?你能解释更多吗?
  • 你只是想实现 SIUnit 的构造函数吗?如果是这样,提及创建子类并不会增加任何内容。
  • 一个类本身可以访问它自己的所有值,而不管它们在哪个实例上被调用。

标签: java inheritance copy-constructor


【解决方案1】:

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

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

【讨论】:

  • 在 Java 中,没有像“复制构造函数”这样的东西,我的意思是它并不特别。不仅可以从构造函数访问私有字段——如果不是单独的类,谁可以使用这些字段?
  • 是的——我不是专门指复制构造函数,而是在类中。我认为最初的问题是因为新实例不仅访问其自己的值,而且还访问位于单独实例中的值。我将更新我的答案以使其更清晰。
猜你喜欢
  • 1970-01-01
  • 2011-10-30
  • 2015-10-07
  • 2015-08-07
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
相关资源
最近更新 更多