что происходит при создании объектов по-другому по наследству в java? - PullRequest
0 голосов
/ 03 февраля 2020

вот вопрос, связанный с наследством, мне задали во время интервью. Кто-нибудь может объяснить мне, что происходит в 4 случаях создания объекта, которые приведены ниже. Кто-нибудь может мне помочь с этим. Заранее спасибо

class A {

    int i = 10;

    void printHi() {
        System.out.println("Hi in A");
    }
}

class B extends A {

    int k = 20;

    void printHi() {
        System.out.println("Hi in B");
    }
}

public class Test {

    public static void main(String[] args) {

        A a = new A();// 1.a.k is possible?
        A a = new B();//2.
        B b = new A();//3.b.i is possible?
        B b = new B();//4.
    }

}

1 Ответ

0 голосов
/ 03 февраля 2020

В четырех случаях допустимы только 3.

A a = new A();
A a = new B();
B b = new B();

В наследовании Java вы можете создать экземпляр подкласса и назначить его суперклассу, но не наоборот B b = new A(); ( возникнет ошибка компиляции), поскольку подкласс будет унаследован от суперкласса, поэтому все методы либо запускаются из суперкласса из подкласса, если они переопределены.

Если вы вызываете метод printHi, вы можно увидеть, что именно происходит.

  1. Для A a = new A(); printHi выведет Hi in A, поскольку это экземпляр класса A
  2. Для A a = new b(); printHi напечатает Hi in B потому что это экземпляр класса B
  3. Для B a = new B(); printHi напечатает Hi in B, потому что это экземпляр класса B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...