覆盖扩展类的超类的方法

时间:2014-06-13 16:19:57

标签: java oracle-adf extends method-overriding

是否可以覆盖扩展类的超类的方法?

以下是示例:

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 ??

3 个答案:

答案 0 :(得分:2)

是的,这会覆盖该方法,因为MyClass从BaseModuleImpl继承其属性,而BaseModuleImpl又继承自ApplicationModuleImpl。但请记住,超级电话呼叫最直接的父母。因此,如果你在BaseModuleImpl中覆盖了prepareSession,那么myClass的prepareSession将调用BaseModuleImpl&#39的prepareSession。

答案 1 :(得分: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?这个问题可能会对您有所帮助。

答案 2 :(得分:1)

是的,您可以MyClass基本上也延伸ApplicationModuleImplApplicationModuleImpl类也被视为MyClass的父类。