2010-08-17 20 views
31

Mam klasy następująco:Wywołanie konstruktora klasy bazowej z klasy pochodnej w Java

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; 
    } 
} 

Teraz wielokąt foremny to wielokąt, którego wszystkie boki są równe. Co powinno być konstruktorem mojego regularnego wielokąta?

public Regularpolygon extends Polygon{ 

//constructor ??? 
} 
+1

To miłe, że przyjął tę jedną. Ale wcześniej zadałeś więcej pytań. Jeśli nie możesz ich znaleźć, po prostu kliknij w dowolnym miejscu, w którym twoje imię pojawia się jako link (np. Na górnym pasku lub w polu "pytanie" tutaj powyżej), a następnie wylądujesz na [stronie profilu] (http: //stackoverflow.com/users/419373/akshay). Możesz tam znaleźć całą swoją historię, w tym pytania, które zadałeś wcześniej. PS: zarejestrowanie konta byłoby miłe, inaczej nie będziesz mógł zalogować się na to samo konto na innych komputerach/przeglądarkach. – BalusC

Odpowiedz

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

Twój konstruktor powinien być

public Regularpolygon extends Polygon{ 

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

// YOUR CODE HERE 

} 

} 
+5

Musiałem -1 za bzdury o tym, że jest to dobra praktyka kodowania do zapewnienia konstruktora no-arg w klasie bazowej. –

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

Myślę, że pytanie było inne. Jakoś nie trafiłeś w sedno. –

Powiązane problemy