Примеры «Строго Наследования» - PullRequest
1 голос
/ 06 июня 2019

Я читал о "Строгое наследование" ( ссылка ). Он сказал:

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

В основном, если A и B являются классами, а A является строгим отцом B, тогда объект типа B ведет себя так же, как A, с большим количеством функций.

Мне было интересно, есть ли язык, который поддерживает эту идею. Насколько я знаю, Smalltalk и Java его не поддерживают. Есть ли языки, которые поддерживают эту идею? Буду рад увидеть пример. Если нет языков, поддерживающих эту идею, в чем может быть причина (почему Java не поддерживает ее)?

Я также читал, что C может подражать этой идее из-за слабой типизации, но я не мог придумать, как ее реализовать.

1 Ответ

0 голосов
/ 06 июня 2019

Можно рассмотреть ключевое слово final в Java ( ссылка ) и ключевое слово sealed в C # ( ссылка ). Методы, помеченные этими ключевыми словами, не могут быть переопределены в дочерних классах.

Я согласен, что переопределение метода следует использовать с осторожностью, поскольку оно может случайно нарушить поведение родительского класса. Поэтому используйте его только тогда, когда вы полностью контролируете ситуацию См. статью для более подробной информации.

...