Java 重写扩展类的超类的方法

Java 重写扩展类的超类的方法,java,oracle-adf,extends,overriding,Java,Oracle Adf,Extends,Overriding,是否可以重写扩展类的超类的方法 以下是一个例子: public class ApplicationModuleImpl { protected void prepareSession(oracle.jbo.Session p1) { // Preparing the session } } public class BaseModuleImpl extends ApplicationModuleImpl { } 类BaseModuleImpl不重写Appl

是否可以重写扩展类的超类的方法

以下是一个例子:

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

是的,因为
MyClass
实际上也扩展了
ApplicationModuleImpl
ApplicationModuleImpl
类也被视为
MyClass

的父类。是的,这将覆盖该方法,因为MyClass从BaseModuleImpl继承其属性,BaseModuleImpl又从ApplicationModuleImpl继承。但请记住,super调用的是最直接的父级。因此,如果您在BaseModuleImpl中重写了prepareSession,那么MyClass的prepareSession将调用BaseModuleImpl的prepareSession。

是的,您可以将超类的方法重写为子类

方法重写本身意味着:
由其父类之一提供的方法的具体实现,称为方法重写。

要了解有关重写的更多信息,请参阅


也可以参考这个问题。用
@Override
注释您的方法,然后编译。如果编译器没有抱怨注释的使用,那么它会正确地重写(super-super)方法@GingerHead我已经编辑了我的答案并给出了一个链接。我想这个问题可能会对你有所帮助。你能重新表述一下你的问题吗?我没有明白你的要求。你的意思是没有调用ApplicationModuleImpl的prepareSession?我不明白。受保护方法不可访问的唯一情况是,它被不在同一包中的类调用,除非调用的类是MyClass所属的子类。你确定你没有遗漏什么吗?