|
|
|
Теор. вопрос про наследование
|
|||
|---|---|---|---|
|
#18+
Это вопрос и разъяснение из него из бесплатного экзамена от Whizlabs Наверное, вечер тому причиной, но понять не могу. Ответил верно на интуиции. Не могли бы уважаемые гуру разъяснить каждый пункт ответа? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Ответы Код: plaintext 1. 2. 3. 4. 5. Объяснение: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 17:47:43 |
|
||
|
Теор. вопрос про наследование
|
|||
|---|---|---|---|
|
#18+
Это появилось в Java 5, насколько мне известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 22:05:27 |
|
||
|
Теор. вопрос про наследование
|
|||
|---|---|---|---|
|
#18+
что интерстно, это то, что и в начальноам jsdc doc они об этом не писали, как и о многом другом. с этим столкнулся, когда готовился к сертификации, просто отвутствовали методы у классов %) качайте поcлединие jdocи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2006, 23:51:09 |
|
||
|
Теор. вопрос про наследование
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 08:35:45 |
|
||
|
Теор. вопрос про наследование
|
|||
|---|---|---|---|
|
#18+
Судя по процитированной спецификации смысл сводится к следующему: можно переопределить метод и даже изменить ему возвращаемый тип, если этот тип тот же или дочерний. Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 10:44:20 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34195254&tid=2147222]: |
0ms |
get settings: |
17ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
57ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
82ms |
get tp. blocked users: |
3ms |
| others: | 311ms |
| total: | 526ms |

| 0 / 0 |
