русский
Germany.ruForen → Архив Досок→ Programmierung

программирование, курсы для детей оффлайн.

18.02.24 22:06
Re: программирование, курсы для детей оффлайн.
 
alex445 коренной житель
in Antwort Отпускник 18.02.24 21:19, Zuletzt geändert 18.02.24 22:23 (alex445)

Объект класса С не может вызывать дефолтную имплементацию интерфейса, от которого этот класс наследуется. Но если привести объект С к типу интерфейса, то возможность вызвать дефолтную имплементацию вдруг появляется. А если бы от абстрактного наследовался, то мог бы его дефолтную имплементацию вызвать без проблем. - Вот и вопросик для собеседующего. Осталось лишь оформить в виде какой-нибудь заковыристой задачки, чтобы не так явно было видно, и можно издеваться на собесах.


А всё потому, что от интерфейсов классы не наследуются. Интерфейсы лишь обозначают контракты для классов - класс должен выполнить этот контракт. Интерфейсы наследуются от интерфейсов, классы - от классов. Дефолтные имплементации для интерфейсов - лишь при использовании объектов как интерфейсов.


Вот тут разбирают эту возможность и в комментах ноют. ))) По мне, так тоже мусора и тонкостей становится всё больше. Видно, что уже накручивают костылей, чтобы преодолеть изначальные ограничения, введённые по дизайну. Уже надо другой язык делать, или ломать совместимость, удаляя поддержку старых фич.


А вообще, эту штуку ввели, похоже, все модные языки, если её не было изначально. Та же Джава. Только не знаю - у них тоже класс, унаследованный от такого интерфейса, не имеет доступа к его дефолтным имплементациям?

 

Sprung zu