Java проблема, которую я не понимаю - PullRequest
0 голосов
/ 27 апреля 2018

Мне жаль, что я могу показаться глупым, но я новая Ява, так как я учусь в старшей школе:

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. OneTwo

  2. TwoOne

  3. Два

  4. Один

  5. Нет вывода

Может кто-нибудь помочь мне с ответом на вопрос выше, я много читал об объектах и ​​классах и о том, как они работают и как работают подклассы, но я не могу понять этот вопрос, plx, помогите.

Редактировать: Это AP компьютерная наука. Вопрос, у которого у меня действительно нет наставника / учителя, чтобы охватить большую часть Java, был для меня самообучением, поэтому я бы считал себя новичком в Java, но я получил много прикрыл, спасибо за помощь !!

1 Ответ

0 голосов
/ 27 апреля 2018

Хороший ответ - 3. «Два».

Чтобы понять почему, вы должны понимать полиморфизм и переопределение: В вашем случае у вас есть два класса:

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

Все открытые и защищенные поля из One видимы и могут быть переопределены Two. В вашем случае One.display() переопределяется на Two.display().

Если код соответствует Java-соглашениям, необходимо добавить аннотацию @Override поверх метода Two.display () для явного объяснения этого поведения другим разработчикам и компилятору, который проверяет, метод уже существует в родительском объекте.

Надеюсь, я помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...