【问题标题】:Java issue that i dont understand我不明白的Java问题
【发布时间】:2018-04-27 12:29:32
【问题描述】:

很抱歉,我可能看起来很笨,但我是新的 Java,因为我正在高中学习它:

public class One
{
    public void display()
    {
        System.out.print ("One");
    }
}

public class Two extends One
{
    public void display ()
    {
        System.out.print("Two");
    }
}

以下代码段执行后会打印什么?

One object1= new Two();
object1.display();
  1. 一二

  2. TwoOne

  3. 两个

  4. 一个

  5. 无输出

谁能帮我回答上面的问题,我已经阅读了很多关于对象和类以及它们如何操作以及子类如何工作的内容,但我无法解决这个问题,请帮助。

编辑:这是一门 AP 计算机科学 我真的没有导师/老师可以接触到大多数 java 的问题是我自学的,所以我认为自己是 java 的初学者,但我得到了很多已覆盖,感谢您的帮助!!

【问题讨论】:

标签: java class object


【解决方案1】:

最好的答案是 3。“二”。

要了解原因,您必须了解多态性和覆盖: 在您的情况下,您有两个类:

+------------------+
|        Two       |
+------------------+
          |
        extend
          |
          v
+------------------+
|        One       |
+------------------+

来自 One 的所有公共和受保护字段都可以被 Two 看到和覆盖。 在您的情况下,One.display()Two.display() 覆盖。

如果代码遵循 Java 约定,则应在 Two.display() 方法顶部添加注释 @Override,以向其他开发人员和编译器明确此行为,以检查该方法是否已存在于父级中对象。

希望我对你有所帮助。

【讨论】:

  • 仅当代码可以编译时(来自问题的代码不会)。
  • 如果您创建一个带有 One 类的文件 One.java 和一个带有 Two Class 的文件 Two.java ,则问题中的代码会编译;)
  • 请先直接从问题中复制代码进行测试。
  • 这只是他的工具中的复制粘贴问题......加油!
  • 有时这些问题会故意留在家庭作业中。我不知道这是否也是这种情况,但 IMO 值得解决,这就是我发布第一条评论的原因。我从来没有说你的答案很糟糕,只是不完整:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 2021-10-17
  • 1970-01-01
  • 2021-04-26
  • 2020-02-13
  • 1970-01-01
  • 2022-08-08
相关资源
最近更新 更多