Ява IS-A отношения экзамен вопрос путаница - PullRequest
5 голосов
/ 13 июля 2010

От MasterExam:

Какие утверждения верны? (Выберите все которые применяются)

A. это отношения всегда полагаются на Наследование
B. это отношения всегда полагаются на переменные экземпляра
C. это отношения всегда требуют минимум два типа классов
D. это отношения всегда полагаются на полиморфизм
E. это отношения всегда тесно связаны

Правильные ответы: A, C, D

Я не понимаю, насколько правильно все из A, C или D.

Объект Object IS-A Object. Строковый объект IS-A String. В каждом из этих операторов есть только один тип класса, и наследование или полиморфизм не применяются.

Правильно ли мое обоснование или неправильные ответы?

Ответы [ 6 ]

4 голосов
/ 13 июля 2010

«Отношения» относятся к отношениям между двумя классами.Отношение is-a - это тип отношений, который использует наследование (в отличие, например, от has-a, который использует композицию).Например, String is-A Object.Класс не может наследовать от себя, что подразумевает C. Как примечание, класс может иметь композицию (has-a) с самим собой.Например, Person может иметь другого Person в качестве материнского поля.

Каждый раз, когда у вас есть наследование, экземпляр подкласса может использоваться как экземпляр суперкласса.Это полиморфизм, что означает, что D тоже прав.

3 голосов
/ 13 июля 2010

A. То, что Строка - это Строка, является ... тавтологией, считающейся очевидной.Но, взглянув на документацию по API, вы обнаружите, что java.lang.String также является java.lang.Object.Фактически все классы Java наследуются от java.lang.Object.Они наследуют основные свойства объекта и добавляют некоторые другие свои собственные.В этом и заключается вся сущность отношений.

C. Опять же, тавтология, касающаяся любого объекта, представляет интерес для дзен-буддистов, но не для языковых дизайнеров и других ученых-компьютерщиков.Таким образом, чтобы иметь отношение «есть», вам нужно два разных класса.

D. Я не уверен в этом.Если бы меня спросили, я бы сказал, что полиморфизм зависит от отношений «есть», а не наоборот.

1 голос
/ 13 июля 2010

Я думаю, что пункты A & C к настоящему моменту довольно ясны ... относительно D. хотя, технически возможно, можно расширить класс без поведения экземпляра или свойства ... (пустым или, возможно, только со статическими элементами) .. .но, что в принципе отчасти побеждает цель «расширения» классов, так как вы хотите наследовать поведение / функциональность от классов выше дерева наследования. Итак, я бы сказал, что вариант D. правильный (почти) :) (если мы не будем слишком техническими). ​​Кстати, это может быть интересным обсуждением.

1 голос
/ 13 июля 2010

Вы должны увидеть это немного по-другому:

  • Кошка животное
  • Автомобиль имеет двигатель
  • Строка is-a объект
  • Строка имеет -a массив символов

Постарайтесь увидеть это таким образом, теперь это должно проясниться.

1 голос
/ 13 июля 2010

Ваше обоснование слегка отклонено, поскольку это отношение относится к классам , а не к объектам.

Строковый объект IS-A, поскольку String наследуется от Object. Аналогично FileOutputStream IS-A OutputStream IS-A Object.

IS-A - это связь между классами, а не между классами и объектами.

0 голосов
/ 13 июля 2010

Извините, ваш разум ошибочен. Они говорят о двух разных классах. Например, Строка - это Объект.

...