Разница между динамическими и статическим присвоением типов в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Разница между динамическими и статическим присвоением типов в Java

Сообщение Anonymous »

Учитывая следующую иерархию классов, каковы динамические и статические типы для следующих операторов?
Иерархия классов:

Код: Выделить всё

class Alpha {}

class Beta extends Alpha {}

class Gamma extends Alpha {}

class Epsilon extends Alpha{}

class Fruit extends Gamma{}

class Golf extends Beta {}

class Orange extends Fruit{}
Каков статический и динамический тип каждого из следующих операторов?

Код: Выделить всё

Fruit f = new Fruit();
Alpha a = f;
Beta b = f;
a = b;
Gamma g = f;
Мои ответы/вопросы:
  • Я понимаю, что Fruit f = new Fruit() будет как статического, так и динамического типа Fruit.
  • Код: Выделить всё

    Alpha a = f;
    будет иметь тип Alpha во время компиляции (статический) и тип Fruit во время выполнения (динамический).
  • Код: Выделить всё

    Gamma g = f;
    будет иметь тип Gamma во время компиляции (статический) и тип Fruit во время выполнения (динамический).
Однако я не знаю другого два ответа:
  • Код: Выделить всё

    Beta b = f
    — это экземпляр, в котором два подкласса одного и того же суперкласса назначаются друг другу, поэтому я не уверен, будет ли он иметь тип Beta или тип Alpha во время компиляции (статический).
    />
  • И a = b — это присваивание после объявления, поэтому я не уверен, каким будет ответ.


Подробнее здесь: https://stackoverflow.com/questions/205 ... ts-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»