假设我有两个类A和B,其中A是B的超现在,我写一个函数(覆盖),说在两个类本功能()。那么,如果我想从B的对象中调用A中的funct(),有可能吗?调用子类从超类中重写功能JAVA
0
A
回答
0
鉴于类你问
然后,如果我想从B的对象调用A中的本功能(),它是可能 ?
因此,让我们
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();
}
}
+0
所以,我们不能直接通过使用一个对象来调用over-ridden函数,对吧?谢谢您的帮助! –
+0
@DChetan没错。别客气。 –
2
class A {
public void f() {...}
}
class B extends A {
@Override public void f() { super.f(); }
}
这就是你想要的吗?
相反,如果你想直接调用A#f()
对B型的实例,你必须提供一个占位符的功能:像
class A {
public void funct() {...}
}
class B extends A {
@Override
public void funct() {...}
}
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();
1
我有特技如这种情况下,以一个不合逻辑的方式在本功能使用标志的参数(操作它)的方法: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. 从抽象超类调用重写的子类的类方法
- 2. Java继承:超类被“重写”的子类的功能与不同的签名
- 3. 在超类的子类中重写的调用方法
- 4. Java超级方法调用子类型重写方法
- 5. Java调用子类和超类
- 6. 重写超和子类
- 7. PHP呼叫重写子类功能
- 8. 从重写的Java类调用方法。
- 9. 从Java中的子类构造函数调用超类
- 10. 调用子类从Java中
- 11. C++如何调用子类与功能,具有超类指针
- 12. 子类__init__重写超类的
- 13. 是否有可能从Java的超类中调用子类的实例变量?
- 14. 从超类调用子类方法
- 15. Actionscript:从子类调用超类方法
- 16. 从超类Java实例化子类Java
- 17. Java子类过载不会从超类调用
- 18. 引用java中超类的子类
- 19. 在Matlab中使用超类功能修改子类属性
- 20. Java - 从子类发送值到超类
- 21. 从超类功能返回子类定义
- 22. 如何从子类调用重写的父类方法?
- 23. EmberJS:从子类的init方法调用父类的功能
- 24. 如何从父类调用子类功能PHP
- 25. java中,从超类
- 26. Java的继承:在超类中调用子类方法
- 27. Java继承:在超类中调用子类方法
- 28. Java:超类和子类
- 29. 调用类功能
- 30. 调用类功能
@ Dukeling我的意思是你不能从对象本身之外调用超类方法。 –
为什么你想这样做呢? – Achrome
@AshwinMukhija我只是想了解实施情况,无论是否可行。 –