2013-03-26 6 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의 다른 방법으로 변경되는 경우가 있습니다.

관련 문제