【问题标题】:Inheritence - Mock Exam继承 - 模拟考试
【发布时间】:2016-03-23 23:04:55
【问题描述】:

我有这个代码:

class A {
    protected int x;

    public int getX() {
        return x;
    }
}

class B extends A {
    
    private int answer;

    public void someMethod() {
      answer = x;
      answer = this.x;
      answer = this.getX();
      answer = super.x;
      answer = super.getX();
    } 
}

someMethod 中的哪些赋值语句是有效的?

我认为这两条“超级”行是正确的?

【问题讨论】:

  • 任何考试的范围都是为了测试您对该主题的了解。在 SO 上提出“紧急”或“最后一刻”的问题会破坏该范围。另外,出于多种原因,无论如何,您的问题都不适合 SO。见here
  • 我刚刚做了,但我想我搞砸了。具有上述选项的每个方法都只返回 0。它们确实可以编译,但我猜这是主要的事情?
  • 我知道这是一个令人震惊的科科我道歉,只是在这里抓着稻草!
  • 总是0?这很奇怪,因为您从未将值设置为x,所以绝对不可能让x 具有其默认值...
  • 觉得我刚刚做的测试课完全搞砸了!

标签: java inheritance


【解决方案1】:

someMethod 中的哪些赋值语句是有效的?

所有的。

xthis.xsuper.x 都指向class A 中的protected int x,它对子类B 可见。 this.getX()super.getX() 都在 class A 中调用 public int getX(),这对子类 B 可见。

answerxgetX()的返回值都是int类型,所以赋值是有效的。

【讨论】:

  • 谢谢 :) 我自己在一个狡猾的编译器上尝试过,它对我所有的方法都返回 0,所以一切都像你说的那样工作!再次欢呼。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2011-08-08
  • 2010-12-03
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多