2010-01-13 14 views
21

hei. el lenguaje es java quiero extender esta clase que el constructor tiene parámetros.java, extendiendo la clase con el constructor de la clase principal tiene el parámetro

esta es la clase principal

public class CAnimatedSprite { 
    public CAnimatedSprite(String pFn, int pWidth, int pHeight) { 
    } 
} 

este es el niño de clase

public class CMainCharacter extends CAnimatedSprite { 

    //public void CMainCharacter:CAnimatedSprite(String pFn, int pWidth, int pHeight) { 
    //} 
} 

¿Cómo escribir la sintaxis correcta? y el error es "el constructor no se puede aplicar a tipos determinados"

Respuesta

36

Puede definir cualquier argumento que necesite para su constructor, pero es necesario llamar a un constructor de la superclase como la primera línea de su propio constructor. Esto se puede hacer usando super() o super(arguments).

public class CMainCharacter extends CAnimatedSprite { 

    public CMainCharacter() { 
     super("your pFn value here", 0, 0); 
     //do whatever you want to do in your constructor here 
    } 

    public CMainCharacter(String pFn, int pWidth, int pHeight) { 
     super(pFn, pWidth, pHeight); 
     //do whatever you want to do in your constructor here 
    } 

} 
+0

funciona. Gracias. estado con este problema de sintaxis – r4ccoon

+0

¿Qué sucede si tengo varios constructores en mi clase raíz? ¿Tengo que hacer super() para cada uno de ellos en mi clase extendida? – sammiwei

3

La primera declaración de su constructor debe ser una llamada al constructor de la superclase. La sintaxis es la siguiente:

super(pFn, pWidth, pHeight); 

Depende de usted decidir, si desea que el constructor de la clase tenga los mismos parámetros y sólo tiene que pasar a superclase constructor:

public CMainCharacter(String pFn, int pWidth, int pHeight) { 
    super(pFn, pWidth, pHeight); 
} 

o pasar otra cosa, como:

public CMainCharacter() { 
    super("", 7, 11); 
} 

Y no especifican el tipo de retorno para los constructores. Es ilegal.

1
public class CAnimatedSprite { 
    public CAnimatedSprite(String pFn, int pWidth, int pHeight) { 
    } 
} 


public class CMainCharacter extends CAnimatedSprite { 

    // If you want your second constructor to have the same args 
    public CMainCharacter(String pFn, int pWidth, int pHeight) { 
     super(pFn, pWidth, pHeight); 
    } 
} 
Cuestiones relacionadas