2010-08-17 4 views
31

J'ai une classe comme suit:Appeler un constructeur de classe de base de la classe dérivée en 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; 
    } 
} 

maintenant un polygone régulier est un polygone dont tous les côtés sont égaux. Quel devrait être le constructeur de mon polygone régulier?

public Regularpolygon extends Polygon{ 

//constructor ??? 
} 
+1

Il est bien que vous avez accepté celui-ci. Mais vous avez déjà posé plus de questions auparavant. Si vous n'arrivez pas à les trouver, il suffit de cliquer n'importe où votre nom apparaît sous la forme d'un lien (par exemple dans la barre supérieure ou dans la boîte "demandée" ci-dessus), puis vous atterrirez dans votre [page profil] (http: //stackoverflow.com/users/419373/akshay). Vous pouvez y trouver toute votre histoire, y compris les questions que vous avez posées auparavant. PS: enregistrer votre compte serait bien, sinon vous ne pourrez pas vous connecter au même compte sur d'autres PC/navigateurs. – BalusC

Répondre

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

Votre constructeur devrait être

public Regularpolygon extends Polygon{ 

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

// YOUR CODE HERE 

} 

} 
+5

Je devais -1 pour le non-sens à ce sujet étant bonne pratique de codage pour fournir un constructeur sans-arg dans la classe de base. –

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

Je pense que la question était différente. Vous avez en quelque sorte manqué le point. –

Questions connexes