2013-05-14 2 views
0

I는 I가 연장 7 개 클래스가추상 클래스 계층 구조에서 오른쪽 필드 가져 오기?

public abstract class A{ 
    private int x; 
    public void doSomethingToX{...}; 
    public int getX(){ 
    return x; 
    } 

, 7 각각은 동일한 방식으로 doSomethingToX 구현 추상 클래스를 가지고 있으므로 클래스 B가 연장 경우 I 클래스 A.에서 정의하고 I B.doSomethingToX()를 호출 한 다음 B.getX()를 호출하면 B의 X 값을 얻거나 A를 얻게됩니까?

list.add(new B()); 
    list.get(index).doSomethingToX(); 
    list.get(index).getX(); 

내가 A의 X 또는 B의 얻을 것이다 : 내 진짜 프로그램에서

나는의 ArrayList를이

ArrayList<A> list; 

객체 내가 전화 있나요? 당신이 getX를 오버라이드 (override)하지 않는 경우

답변

1

() 확장 클래스에 당신은 당신이 getX를 오버라이드 (override)하면()는 값이 무시 방법에 돌려 드릴 것입니다 A.

에서 X를 얻을 것이다.

예 :

A a = new B(); a.getX(); 
B b = new B(); b.getX(); 

위의 모든 라인 getX (의 값을 반환합니다)이 메소드는 다음 값이 정의 얻을 것이다 클래스 B에 오버라이드 (override)되지 않은 경우 클래스 B

에 오버라이드 (override)

+0

그래서 각 클래스에 대해 getX()를 작성해야합니까? 한 번만 쓸 수있는 방법이 있습니까? –

+0

클래스 B의 getX()를 재정의하지 않으면 클래스 A의 getX()에 정의 된 값을 얻게됩니다. –

+0

감사합니다. 당신이 먼저 대답 한 이래로, 나는 당신에게 우수 답변 –

관련 문제