Предположим, у меня есть два класса A и B, где A - суперкласс из B. Теперь я пишу функцию (переопределить), скажем, функцию() в обоих классах. Тогда, если я хочу назвать функцию() в A из объекта B, возможно ли это?вызов переопределенной функции в суперклассе из подкласса в JAVA
ответ
данных классов, как
class A {
public void funct() {...}
}
class B extends A {
@Override
public void funct() {...}
}
Вы спрашиваете
Тогда, если я хочу назвать функцию() в A из объекта B, возможно ли это ?
Итак, давайте
B b = new B();
b.funct();
A a = b;
a.funct();
((A)b).funct();
превыше всего делать то же самое из-за полиморфизма и позднего связывания.
Единственный способ назвать реализацию суперкласса - получить ссылку на этот элемент с помощью ключевого слова super
.
class A {
public void funct() {...}
}
class B extends A {
@Override
public void funct() {
super.funct();
}
}
Итак, мы не можем напрямую ссылаться на перегруженную функцию, просто используя объект, правильно? Спасибо за помощь! –
@DChetan Правильно. Пожалуйста. –
class A {
public void f() {...}
}
class B extends A {
@Override public void f() { super.f(); }
}
Это то, что вы хотите?
Если вместо этого вы хотите позвонить A#f()
непосредственно на экземпляре типа B, вы должны предоставить функцию заполнитель для этого:
class B extends A {
@Override public void f() { ... }
public void superF() { super.f(); }
}
new B().f(); // calls B#f();
new B().superF(); // calls A#f();
меня трик, такие, как эта ситуация для ее эксплуатации в нелогичном способе с использованием флагом аргумента в функц() метод: D, как это:
class A {
public void funct(boolean callSuper) {
// avoid using callSuper arg here
}
}
class B extends A {
@Override
public void funct(boolean callSuper) {
if (callSuper) {
super.funct(callSuper);
return;//if return type is void
} else {
//do here the functionality if the flag is false
}
}
}
или
class A {
public void funct() {
}
}
class B extends A {
private boolean callSuper = false;
@Override
public void funct() {
if (callSuper) {
super.funct(); // call A.funct() functionality
setCallSuper(false);
} else {
//do here the functionality of B.funct() if the flag is false
}
}
public void setCallSuper(boolean callSuper){
this.callSuper = callSuper;
}
}
- 1. Вызов суперкласса из конструктора подкласса в Java
- 2. Вызов переопределенной функции из функции переопределения
- 3. Вызов переопределенной функции из базового класса?
- 4. метод из подкласса не найден в суперклассе
- 5. Вызов переопределенной и замороженной функции
- 6. Использование метода подкласса в суперклассе
- 7. C++ метод вызова из подкласса в суперклассе
- 8. функция вызова в суперклассе из подкласса
- 9. Вызов функции из подкласса внутри другого подкласса
- 10. Настройка типа поля в суперклассе из подкласса (Java)
- 11. Вызов метода подкласса в унаследованной виртуальной функции?
- 12. Как получить поле объекта, созданного в суперклассе, из подкласса подкласса
- 13. Вызов суперфункции из функции подкласса
- 14. Отслеживание всех экземпляров подкласса в суперклассе
- 15. Ссылка на объект подкласса при вызове функции, объявленной в суперклассе
- 16. Объявление подкласса в суперклассе и метод вызова
- 17. Как вызвать метод в суперклассе суперкласса подкласса
- 18. Добавление экземпляров подкласса к массиву в суперклассе
- 19. Вызов метода подкласса из суперкласса
- 20. Как использовать методы подкласса в суперклассе?
- 21. Как использовать методы из подкласса в абстрактном суперклассе
- 22. Как добавить funtionallity в Jbutton, расположенный в суперклассе из подкласса?
- 23. Метод java подкласса, ссылающийся на поле в суперклассе help!
- 24. Метод вызова C++ для подкласса в суперклассе?
- 25. Наследование с использованием экземпляров подкласса в суперклассе
- 26. с использованием статической переменной подкласса в суперклассе
- 27. Вызов производной функции (не переопределенной) из указателя базового класса
- 28. Java. Вызов метода подкласса
- 29. Вызов конструктора из подкласса
- 30. C++ Использование базовой функции в переопределенной функции
@ Дюкелинг. Я имел в виду, что вы не можете вызвать метод суперкласса вне самого объекта. –
Зачем вам это делать в первую очередь? – Achrome
@AshwinMukhija Я просто хотел узнать о реализации, можно ли это сделать или нет. –