2010-08-17 27 views
31

tengo una clase como sigue:Llamar a un constructor de la clase base desde la clase derivada 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; 
    } 
} 

Ahora un polígono regular es un polígono cuyo todos los lados son iguales. ¿Cuál debería ser el constructor de mi polígono regular?

public Regularpolygon extends Polygon{ 

//constructor ??? 
} 
+1

Es bueno que usted aceptó éste. Pero ya has hecho más preguntas previamente. Si parece que no puede encontrarlos, simplemente haga clic en cualquier lugar donde aparezca su nombre como un enlace (por ejemplo, en la barra superior o en el cuadro "preguntado" aquí arriba), luego ingresará en su [página de perfil] (http: //stackoverflow.com/users/419373/akshay). Puede encontrar toda su historia allí, incluidas las preguntas que hizo antes. PD: registrar su cuenta sería agradable, de lo contrario no podrá iniciar sesión en la misma cuenta en otras PC/navegadores. – BalusC

Respuesta

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

Su constructor debe ser

public Regularpolygon extends Polygon{ 

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

// YOUR CODE HERE 

} 

} 
+5

Tuve que -1 por las tonterías de que es una buena práctica de codificación proporcionar un constructor sin argumentos en la clase 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

Creo que la pregunta era diferente. De alguna manera te perdiste el punto. –

Cuestiones relacionadas