2013-05-01 8 views
0

저는 Ant라는 하위 클래스 인 Queen이라는 클래스가 있습니다. Queen의 생성자는 매개 변수를 가져 와서 Ants 생성자에 전달하고 여왕에 대한 추가 특성을 전달합니다. 자, 이것이 어떻게 작동해야하는지입니다. 그러나 나는 Ant 생성자가 결코 호출되지 않는다는 것을 발견했다. 내가 놓친 게 있니?Java 생성자가 호출되지 않았습니다.

public class Queen extends Ant 
{ 
    public Queen(int width, int height, Square[][] grid) 
    { 
     super(0, 0, width, height); 
     //grid[locationHeight][locationWidth].addQueen(this); 
    } 
} 

개미 생성자 (내가 여기에 일부에 println 문을했지만, 여왕을 구성 할 때 그들이 호출되지 않았다) :

public Ant(int id, int type, int width, int height) 
    { 
     antID = id; 
     antType = type; 
     isAlive = true; 
     width = width/2; 
     height = height/2; 
     setLocation(width, height); 
     if (antType == 0) 
     { 
      lifeSpan = 73000; 
     } 
     else 
     { 
      lifeSpan = 3650; 
     } 
    } 
+6

'Queen' 클래스를 인스턴스화하는 데 사용하는 코드를 보여줍니다. –

+3

나는 이것을 잘못 오진했다고 강력히 생각합니다. Ant 생성자는 실제로 * 호출됩니다. –

+1

여왕 생성자에 도달합니까? –

답변

2

당신은 여왕을 사용하여 여왕 객체를 인스턴스화되지 않습니다 (INT, INT , Square [] []) 생성자를 사용하려면 다른 생성자를 사용하거나 여왕을 전혀 인스턴스화하지 않아야합니다.

+0

모든 컴파일 된 .class 파일을 삭제 한 다음 다시 컴파일했습니다. 문제를 해결 한 것으로 보입니다. – Nick

3

Java 생성자에서 항상은 슈퍼 생성자를 호출합니다. 암묵적으로 arg가없는 부모 생성자를 호출하거나 호출 할 생성자를 지정합니다. 따라서 수퍼 클래스가 기본 생성자를 지정하지 않은 경우 수퍼 생성자를 호출해야합니다. java specification에서

:

명시 적 생성자 호출 및 선언 된 생성자로 시작하지 않는 생성자 몸이 원시 클래스 개체의 일부가 아닌 경우는, 다음 생성자 몸은 암시 적으로 슈퍼 클래스 생성자로 시작 호출 "super();", 인수를 취하지 않는 직접 수퍼 클래스의 생성자 호출. 코드 샘플로

: 전체 코드없이 무슨 일인지 말해 어렵지만, 여왕 개미를 확장하고 표시 생성자, 그것은 해야 작업들만을 경우.

관련 문제