2017-03-22 2 views
0

나는 다음과 같은 클래스 구조를 가지고있다.자바 - 할아버지 클래스 메서드를 재정의하는 방법은 무엇입니까? <code>A</code>는 메소드 이름 <code>do()</code>를 구현</p> <pre><code>Abstract Class A Class B_A extends A Abstract Class C_A extends A Class D_CA extends CA Class E_CA extends CA </code></pre> <p>등급 :

나는 클래스 B_AD_CA 기본 클래스 A에서 방법 do()을 사용하는 것입니다 싶습니다하지만 나는 그것을 무시하고 다른 do()을 구현하기 위해 E_CA 클래스가 필요합니다.

어떻게하면됩니까?

감사합니다.

+0

무엇을 시도 했습니까? 문제가있는 곳은 어디입니까? – UnholySheep

+1

[하위 클래스의 메서드를 재정의하려면 어떻게합니까?] (http://stackoverflow.com/questions/5215612/how-do-i-override-a-method-in-a-subclass) – Tom

+0

무엇입니까? class CA –

답변

0

메서드를 class E_CA으로 간단하게 재정의 할 수 있습니다.

E_CA의 구현을 사용하여 E_CA에서 상속 한 모든 클래스로 연결됩니다 (다시 재정의되지 않는 한). 다른 모든 클래스는 시간 내 주셔서 모두들 감사 A

class E_CA extends CA { 
    @Override 
    public void do() { 
     // new implementation 
    } 
} 
0

do()의 구현을 사용합니다. 하위 클래스에서 @override를 사용해야한다는 것을 알고있었습니다. 그러나 나는 실수를했고 그것은 나를 미치게 만들었다. 문제는 기본 클래스 메서드가 private로 정의되어 있고 손자 방법이 보호되어 있다는 것이 었습니다. 따라서 하위 클래스 메서드에서 "소리 쳤다". 두 가지 구현을 으로 변경하면이 내 문제를 해결했습니다. 다시 한번 감사드립니다.

+1

그런 다음 질문을 삭제하는 것이 좋습니다. 그것은 정확하게 큰 wasnt 그것 ;-) – GhostCat

+0

@GhostCat 어쩌면 ...하지만 그것은 이미 내가 할 수없는 대답을 가지고 있기 때문에 ... – dushkin

+1

나는 당신이해야한다고 경고한다 * shouldnt *; 0 점/음수의 점수가 매겨진 답을 사용하여 질문을 삭제할 수 있어야합니다. 또한 그렇게 할 수있는 유효한 행동이기도합니다. – GhostCat

관련 문제