2013-03-26 3 views
-6

나는 그의 문제에 도움을 드리고 싶습니다. 나는이 주제에 대해 아무것도 찾을 수 없다. (어쩌면 내가 잘못된 것을 찾고있다)오버라이드 메서드

m1()을 대체하는 B라는 이름의 C 서브 클래스를 정의하여 m과 n의 차이점을 리턴한다.

public class C 
{ 
    private int m; 
    private int n; 

    public C(int mIn, int nIn) 
    { 
     m = mIn; 
     n = nIn; 
    } 
    public int m1() 
    { 
     return m+n; 
    } 
} 
+0

어떤 코드를 사용해 보셨습니까? – rgettman

+0

'java override'에 대한 세 번째 검색 결과 -> http://docs.oracle.com/javase/tutorial/java/IandI/override.html –

+0

현재 직면하고있는 문제는 무엇입니까? 어떻게하는지 모르십니까? – Brandon

답변

3
먼저

, mn은 (protected 기본값) protected하지 private해야합니다. 그럼 그냥 그런 짓을 :

public class B extends C { 
    public int m1() { return m - n; } 
} 
+0

숙제에 대한 직접적인 해결책을 제시하는 것은 일반적으로 싫은 일입니다 ... –

+0

공개 또는 보호를 위해 변경할 수 없습니다. Im은 C 클래스를 변경할 수 없습니다. –

+0

@Oli Charlesworth : 네 말이 맞아, 이건 숙제 포럼이 아니야. 그러나 다른 한편으로는 직접적인 해결책은 단지 일부 의견보다 더 잘 이해하는 것이고 그 질문은 충분하지 않습니다. – GameDroids

0

당신은 당신이 C 클래스를 변경할 수 없으며, mn이기 때문에 privateC, 당신은 실제로 수 없습니다 어떤 getter 및 setter가없는 말했다 서브 클래스 Bm 또는 n을 사용하십시오. 당신이 할 수있는 일은 B 클래스를 자신의 mn으로 초기화하는 것입니다. 그런 뭔가 :

public class B extends C{ 
    private int bm; 
    private int bn; 

    public B(int mIn, int nIn){ 
     super(mIn,nIn); 
     this.bm=mIn; 
     this.bn=nIn; 
    } 

    @Override 
    public int m1(){ 
     // and then you can use the B's n and m 
     return this.bm - this.bn; 
    } 
} 

는 다음과 같이 뭔가를 할 수는 :

C myClass = new B(1, 2); 
int difference = B.m1(); 

그러나C 클래스는 어디에서 어떤 다른이 작동하지 않을 경우. C을 변경할 수없는 경우 정상적인 경우 C이 정확히 무엇인지 알지 못합니다. 특히 변수 mn이 있거나 C의 다른 방법으로 변경되는 경우가 있습니다.