tags:

views:

145

answers:

3

hei. the language is java. i want to extend this class which the constructor has parameters.

this is the main class

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

this is the child class

public class CMainCharacter extends CAnimatedSprite {

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

how do i write the correct syntax? and the error is "constructor cannot be applied to given types"

+2  A: 
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
    }

}

You can define any arguments you need for your constructor, you only need to have the super() constructor call as the first line of your own constructor.

Thomas Lötzer
it works. thanks. been around with this syntax problem.
r4ccoon
A: 

The first statement of your constructor must be a call to superclass constructor. The syntax is:

super(pFn, pWidth, pHeight);

It is up to you to decide, whether you want constructor of your class to have same parameters and just pass them to superclass constructor:

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

or pass something else, like:

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

And don't specify return type for constructors. It's illegal.

Tadeusz Kopec
A: 
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);
    }
}
Alex