【问题标题】:.valueOf using another class's private variable.valueOf 使用另一个类的私有变量
【发布时间】:2015-08-08 15:21:36
【问题描述】:

BaseExample 类(我不允许在此示例中使变量受保护):

public class BaseExample {
    private int a;

    public BaseExample(int inVal) {
        a = inVal;
    }

    public BaseExample(BaseExample other){
        a = other.a;
    }

    public String toString(){
        return String.valueOf(a);
    }


}

DerivedExample 类:

public class DerivedExample extends BaseExample {
    private int b;



public DerivedExample(int inVal1, int inVal2){
        super(inVal2);
        a = inVal2;

    }
}

超级方法奏效了。现在,如果我被问到这个,我该怎么称呼它:

**Returns a reference to a string containing the value stored in the inherited varible a followed by a colon followed by the value stored in b public String toString()**

我试过这个:

public String toString(){
            int base = new BaseExample(b);

            return String.valueOf(base:this.b);

        }

如果我把两个返回,它会给我一个无法访问代码的错误。如果我在 valueOf 里面放了一个 super ,它就不起作用了。这也行不通。这是如何执行的?

【问题讨论】:

  • 你没有getter,但你在超类中有一个toString实现,它返回a的值。使用它。

标签: java class private tostring value-of


【解决方案1】:

我认为您误解了要求,您需要打印位于父类中的a,用冒号与当前类中的 b 连接。

String.valueOf(base:this.b)

这是不正确的语法,你想要的是

super.toString() + ":" + this.b;

【讨论】:

  • 当然要清楚,他应该把return放在前面
  • @BenKnoble 而且return语句应该在方法中,方法在类声明中,类声明在.java类中……他已经用return了。
  • 啊。现在完全有道理。我明确地将冒号解释为 valueOf() 内。谢谢。
  • 你为什么使用.concat()?为什么不只是super.toString() + ":" + this.b?当然,后端也发生了同样的事情,但这种方式更具可读性和更简单。
  • @MartinCarney 我喝醉了。请注意,不完全是“后端发生了同样的事情”,但在这种情况下我仍然不会使用它。 stackoverflow.com/questions/47605/…
猜你喜欢
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2017-03-08
  • 2015-10-03
  • 2019-08-28
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多