


Программирование
+3Вопрос про ООП
В ООП есть ситуация называемая СМЕРТЕЛЬНЫЙ РОМБ СМЕРТИ. Это что-то типа этого:
12345
- ОТЕЦ
/ \
ДЕД ВНУК
\ /
МАТЬ
У матери и у отца есть функция Make() и ВНУК при вызове его непонятно какую вызовет.
В java есть способ предотвратить это.
Нужно все методы сделать абстрактными и переопределить метода.
Но если мы сделаем метод абстрактным , то мы же не можем наследоваться. А если мы не сможем наследоваться то как мы можем переопределить функцию?
Переопределяется же наследованная функция.
По дате
По рейтингу
>Но если мы сделаем метод абстрактным , то мы же не можем наследоваться.
Это неверно.
а так разве не работает:
123456789101112131415161718
abstract class Parent {
abstract void abstractMethod();
}
class Child extends Parent {
@Override
void abstractMethod() {
System.out.println("Implementation of abstract method in Child");
}
}
class GrandChild extends Child {
@Override
void abstractMethod() {
System.out.println("Further implementation in GrandChild");
}
}
В жабе, как и в C#, запрещено ромбовидное наследование. Так что забудь про это. Каждый класс может наследоваться только от одного класса.
Все правильно, кроме того, что все неправильно
Да