2010-08-17 9 views
31

에서 파생 된 클래스에서 기본 클래스 생성자를 호출 :다음과 같이 나는 클래스가 자바

public class Polygon extends Shape{ 

    private int noSides; 
    private int lenghts[]; 

    public Polygon(int id,Point center,int noSides,int lengths[]) { 
     super(id, center); 
     this.noSides = noSides; 
     this.lenghts = lengths; 
    } 
} 

지금 정다각형 누구의 모든면이 동일한 다각형이다. 내 정다각형의 생성자는 무엇이되어야합니까?

public Regularpolygon extends Polygon{ 

//constructor ??? 
} 
+1

해야한다. 그러나 이전에 더 많은 질문을 던졌습니다. 만약 당신이 그들을 찾을 수 없다면, 당신의 이름이 링크로 나타나면 (예 : 바로 위의 'asked'상자에서 또는 상단의 'asked'상자에) 당신의 [프로필 페이지] (http : //stackoverflow.com/users/419373/akshay). 이전에 질문 한 내용을 포함하여 모든 기록을 찾을 수 있습니다. 추신 : 귀하의 계정을 등록하는 것이 좋을 것입니다, 그렇지 않으면 다른 PC/브라우저에서 같은 계정으로 로그인 할 수 없습니다. – BalusC

답변

50
public class Polygon extends Shape {  
    private int noSides; 
    private int lenghts[]; 

    public Polygon(int id,Point center,int noSides,int lengths[]) { 
     super(id, center); 
     this.noSides = noSides; 
     this.lenghts = lengths; 
    } 
} 

public RegularPolygon extends Polygon { 
    private static int[] getFilledArray(int noSides, int length) { 
     int[] a = new int[noSides]; 
     java.util.Arrays.fill(a, length); 
     return a; 
    } 

    public RegularPolygon(int id, Point center, int noSides, int length) { 
     super(id, center, noSides, getFilledArray(noSides, length)); 
    } 
} 
2

귀하의 생성자는 그것은 당신이 하나를 인정하는 것이 좋다

public Regularpolygon extends Polygon{ 

public Regularpolygon (int id,Point center,int noSides,int lengths[]){ 
super(id, center,noSides,lengths[]); 

// YOUR CODE HERE 

} 

} 
+5

기본 클래스에 인수가없는 생성자를 제공하는 좋은 코딩 방법에 대해 말도 안되는 소리에 -1이 필요했습니다. –

1
class Foo { 
    Foo(String str) { } 
} 

class Bar extends Foo { 
    Bar(String str) { 
     // Here I am explicitly calling the superclass 
     // constructor - since constructors are not inherited 
     // you must chain them like this. 
     super(str); 
    } 
} 
+0

나는 그 질문이 다르다고 생각한다. 너는 어떻게 든 그 요점을 놓쳤다. –

관련 문제