2014-06-13 5 views
-1

확장 클래스의 수퍼 클래스 메서드를 재정의 할 수 있습니까? 그때가,확장 클래스의 수퍼 클래스 메서드 재정의

public class ApplicationModuleImpl { 
    protected void prepareSession(oracle.jbo.Session p1) { 
     // Preparing the session 
    } 
} 

public class BaseModuleImpl extends ApplicationModuleImpl { 

} 

이 클래스 BaseModuleImplApplicationModuleImpl의 메소드를 오버라이드 (override)하지 않습니다 :

public class MyClass extends BaseModuleImpl { 
    protected void prepareSession(Session session) { 
     super.prepareSession(session); 
    } 
} 

이 정말 메소드를 오버라이드 (override) 하는가 여기

은 예입니다?

편집 :

내가 JDeveloper의의 얼굴 ADF을 사용하고하고 applicationModule 클래스를 볼 수 있습니다 내 클래스는 확장 클래스를 확장 나는이 확장하고 있습니다. 으로 대체 된 경우 prepareSession 메서드를 호출해야합니다.이 메서드는 전혀 호출되지 않습니다.
ADF를 연장하기 때문에로드 타임에 왜 호출되지 않는가 ApplicationModuleImpl ??

+3

'@ Override'로 메소드에 주석을 달고 컴파일하십시오. 컴파일러가 주석의 사용법에 대해 불평하지 않는다면 예 (슈퍼 수퍼) 메소드를 적절히 오버라이드합니다. [언제 자바의 @Override 주석을 사용합니까?] (http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why) –

+0

**주의 사항 왜 downvote 무엇입니까? ** – GingerHead

+0

@ BheshGurung하지만 그것은 확장 이후 ** 로딩 ** ** ** ApplicationModuleImpl ** ?? – GingerHead

답변

2

예 MyClass가 ApplicationModuleImpl에서 상속하는 BaseModuleImpl에서 해당 속성을 상속하므로 메서드를 재정의합니다. 하지만 슈퍼가 가장 즉각적인 부모라고 부르는 것을 기억하십시오. 따라서 BaseModuleImpl에서 prepareSession을 오버라이드 한 경우, MyClass의 prepareSession은 BaseModuleImpl의 prepareSession을 호출합니다.

+0

하지만 확장 된 이후로로드 할 때 왜 호출되지 않는지 ** ** ADF ** ** ApplicationModuleImpl ** ?? – GingerHead

+0

질문의 문구를 바꿀 수 있습니까? 네가 묻는 것을 얻지 못했다. – Kode

+0

jdeveloper에서 얼굴이있는 ADF를 사용하고 있으며 ** applicationModule ** 클래스의 질문에서 볼 수 있듯이 확장 중이며 클래스가 확장 클래스를 확장합니다. ** prepareSession ** 메소드가 ** override ** 인 경우 호출되어야합니다. 호출되는 것이 전혀 없습니다 ... – GingerHead

1

네, 그렇습니다. MyClass도 본질적으로 ApplicationModuleImpl까지 확장 할 수 있습니다. ApplicationModuleImpl 클래스는 MyClass의 부모 클래스로 간주됩니다.

+0

하지만 확장 된 이후에로드 될 때 왜 호출되지 않습니다 ** ADF ** ** ApplicationModuleImpl ** ?? – GingerHead

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?를 참조 오버라이드 (override)에 대한 자세한 내용을 알고.

+0

하지만 확장 된 이후에로드 할 때 왜 호출되지 않는지 ** ** ADF ** ** ApplicationModuleImpl ** ?? – GingerHead

+0

@GingerHead 내 대답을 편집하고 링크를 제공했습니다. 그 질문이 도움이 될 것 같아요. – rachana

관련 문제