2013-10-27 2 views
0

저는 학교에서 Java를 배우고 있으며 상속 및 생성자에 문제가 있습니다. 클래스 A, 클래스 B 및 클래스 C의 3 가지 클래스가 있습니다. 클래스 A는 수퍼 클래스이고 클래스 B는 클래스 A를 확장하고 클래스 C는 클래스 B를 확장합니다. 클래스 B에는 형식 (매개 변수)이 String 인 생성자가 있습니다. 여기까지 좋았어. 그래서 클래스 B를 클래스 C로 확장합니다. 클래스 C에서는 에 클래스 B의 인스턴스가있는 생성자를 매개 변수로 사용해야합니다. 그런 다음 클래스 B에서 정보를 추출하고이를 클래스 C에 저장해야합니다.Java : 하위 클래스의 생성자에 부모 클래스의 객체가 있습니다.

여기에 코드가 있습니다. 에서는

public class B extends A { 

int b; 

public B(int b) { 
this.b=b; 
} 

} 

public class C extends B { 

int c; 

public C(B b) { 

this.c = b.b; 

} 

} 

내 주()

내가 C

인스턴스

C의 c_c = 새로운 C (새로운 B (12))을 생성하기 위해 코드의 다음 라인을 가지고;

이 내용을 컴파일하면 오류가 발생합니다. 오류 : 클래스 B의 생성자 B는 주어진 유형에 적용 할 수 없습니다.

이유 : 너희들이 나를 내가 잘못 한 일을 이해하는 데 도움이 수 있을까 실제 및 형식 인수 목록이

길이

에서 차이가?

+0

다른 클래스 파일을 다시 컴파일하는 것을 잊었을 수 있습니다. – SLaks

답변

2

당신은 명시 적으로 보호 만든다 당신은 C와 B의 정보를 다시로드 할 필요가없는

public C(B b) { 
    super(0); 
    this.c = b.b; 
} 
+2

아니면, 아마도'super (b.b); '일 것이다. – chrylis

0

단순히 C 예에 B의 필드를 볼 수 있도록 클래스 B에 정의 된 기본 생성자부터 C의 생성자에서 B의 생성자를 호출해야합니다

관련 문제