是否可以覆盖扩展类的超类的方法?
以下是示例:
public class ApplicationModuleImpl {
protected void prepareSession(oracle.jbo.Session p1) {
// Preparing the session
}
}
public class BaseModuleImpl extends ApplicationModuleImpl {
}
类BaseModuleImpl
不会覆盖ApplicationModuleImpl
的任何方法,然后我有:
public class MyClass extends BaseModuleImpl {
protected void prepareSession(Session session) {
super.prepareSession(session);
}
}
这是否真的覆盖了方法?
编辑:
我在jdeveloper中使用ADF
面,我正在扩展,因为你可以看到applicationModule
类,我的类扩展了扩展类。并且如果覆盖,则必须调用方法prepareSession
,它根本不被调用。
为什么它在加载时没有被调用,因为它正在扩展ADF ApplicationModuleImpl
??
答案 0 :(得分:2)
是的,这会覆盖该方法,因为MyClass从BaseModuleImpl继承其属性,而BaseModuleImpl又继承自ApplicationModuleImpl。但请记住,超级电话呼叫最直接的父母。因此,如果你在BaseModuleImpl中覆盖了prepareSession,那么myClass的prepareSession将调用BaseModuleImpl&#39的prepareSession。
答案 1 :(得分:1)
是的,您可以MyClass
基本上也延伸ApplicationModuleImpl
。 ApplicationModuleImpl
类也被视为MyClass
的父类。
答案 2 :(得分:1)
是的,您可以将超类的方法重写为子类。
方法覆盖本身意味着:The specific implementation of the method that has been provided by one of its parent class, it is known as Method Overriding.
了解有关覆盖引用Java - Overriding
的更多信息另请参阅Why is super.super.method(); not allowed in Java?这个问题可能会对您有所帮助。