powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Теор. вопрос про наследование
6 сообщений из 6, страница 1 из 1
Теор. вопрос про наследование
    #34194292
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вопрос и разъяснение из него из бесплатного экзамена от Whizlabs
Наверное, вечер тому причиной, но понять не могу. Ответил верно на интуиции. Не могли бы уважаемые гуру разъяснить каждый пункт ответа?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Which of the following methods inserted independently at the indicated line in the following 
code can cause it to compile correctly?

 class  SuperBase{}
 class  Base  extends  SuperBase{} 
 class  Derived  extends  Base{}
 class  CovariantTest1
{
   public  Base getIt(){ return   new  Base();}
}
 class  SubCovariantTest  extends  CovariantTest1
{
// Insert code here
}

Ответы
Код: plaintext
1.
2.
3.
4.
5.
a  public  Derived getIt(){ return   new  Derived();} 
b  public  Base getIt(){ return   new  Derived();} 
c  public  SuperBase getIt() { return   new  Derived();} 
d  public  SuperBase getIt() { return   new  Base();} 
e  public  Derived getIt() { return   new  Base();}


Объяснение:
Choices A and B are the correct answers. Support for covariant return types will allow a
method overriding a super class method to return a subclass of the super class method's
return type. So choice A is correct. Choice B is correct because it conforms to overriding
rules. The return type declared in the case of choices C and D is a super class of the super
class method's return type, which is not allowed. Choice E is incorrect because it returns the
super class object, while the declared return type is of the subclass.

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
Теор. вопрос про наследование
    #34194358
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Теор. вопрос про наследование
    #34194841
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это появилось в Java 5, насколько мне известно.
...
Рейтинг: 0 / 0
Теор. вопрос про наследование
    #34194977
ssppeedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что интерстно, это то, что и в начальноам jsdc doc они об этом не писали, как и о многом другом.
с этим столкнулся, когда готовился к сертификации, просто отвутствовали методы у классов %)

качайте поcлединие jdocи!
...
Рейтинг: 0 / 0
Теор. вопрос про наследование
    #34195254
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hinotf пишет:

Интересно, я такие конструкции пропустил. Попробую ответить.

> *class* CovariantTest1
> {
> *public* Base getIt(){*return* *new* Base();}
> }
> *class* SubCovariantTest *extends* CovariantTest1
> {
> // Insert code here
> }
> Ответы

Тут я не смогу ответить, не вспоминая Мейера.
Наследник может только ужесточить (ну или оставить) требования к
возвращаемым значениям, но не может смягчить их- иначе сама суть
наследования нарушится.

> a *public* Derived getIt(){*return* *new* Derived();}

Тут требование к возвращаемому значению ужесточается- объект класса
Derived может рассматриватся как объект класса Base.

> b *public* Base getIt(){*return* *new* Derived();}

Тут очевидно, т.к. интерфейс не изменился, а внутенности, надеюсь, и так
понятны.

> c *public* SuperBase getIt() {*return* *new* Derived();}
> d *public* SuperBase getIt() {*return* *new* Base();}

Тут проблема в том, что требования к значению смягчаются. И содержимое
метода не важно по-определению (реализация не может подменять интерфейс).

> e *public* Derived getIt() {*return* *new* Base();}

Ну а тут просто ошибка в реализации, будем считатать тривиально.

--
Алексей
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Теор. вопрос про наследование
    #34195615
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по процитированной спецификации смысл сводится к следующему: можно переопределить метод и даже изменить ему возвращаемый тип, если этот тип тот же или дочерний.

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Теор. вопрос про наследование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]