2010-08-14 4 views
11

나는 A 클래스를 가지고 있고 BM은 A를 확장했다. 이제 나는 B의 모든 필드의 매개 변수와 값을 받아들이는 eclipse의 코드 생성 옵션을 사용하여 B의 생성자를 만든다. 또한 A에서 상속 된 필드를 설정하십시오.이클립스에서 생성자를 생성하는 방법

이클립스에서 이러한 코드를 생성하는 바로 가기가 있습니까?

답변

6

이클립스 (3.5)에는이 특정 사건에 대한 옵션이 내장되어 없지만, 어쨌든 당신이 하위 클래스 생성자에서 super(...)을 통해 호출하는 슈퍼 클래스,에 별도의 생성자가 제안했다.

유지 관리가 더 쉬울 것입니다. 예를 들어 수퍼 클래스에 파일을 추가하는 경우 하위 클래스도 업데이트해야합니다.

class A { 
    int i; 
    public A(int i) { this.i = i; } 
} 

class B extends A { 
    int j; 
    public B(int i, int j) { 
     super(i); 
     this.j = j; 
    } 
} 
21

편집기에서 마우스 오른쪽 버튼을 클릭하고 "소스 -> 생성자 생성 필드 생성"을 클릭하십시오. 사용할 슈퍼 생성자를 선택하고 생성자에 추가 할 인스턴스 변수를 선택할 수도 있습니다.

+1

하지만 슈퍼 클래스의 public/protected 멤버에 대한 초기화는 생성되지 않습니다. – aioobe

+0

@aioobe - 동의합니다, 그것은 akshays 질문의 주된 내용이었습니다. –

2

자동으로 수행 할 방법이 없으며 일식 팀이 잘못된 디자인으로 이어질 수 있다고 생각하는 데 거의 가깝습니다.

클래스를 생성하는 것은 객체 자신의 필드 만 초기화하는 것입니다. 수퍼 클래스에서 (init) 필드를 설정해야하는 경우 수퍼 클래스 생성자를 호출하고 수퍼 클래스 필드를 변경해야 할 경우 수퍼 클래스 getter 및 setter 메서드를 호출합니다.

내게 슈퍼 클래스 필드를 초기화하는 것은 나쁘다. 쉽게 피할 수있다.

관련 문제