Подтвердить что ты не робот

Java, расширяющий класс с конструктором основного класса имеет параметр

хей. язык java. Я хочу расширить этот класс, который имеет параметры конструктора.

это основной класс

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

это дочерний класс

public class CMainCharacter extends CAnimatedSprite {

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

как я могу написать правильный синтаксис? и ошибка: "конструктор не может применяться к заданным типам"

4b9b3361

Ответ 1

Вы можете определить любые аргументы, необходимые для вашего конструктора, но необходимо вызвать один конструктор суперкласса в качестве первой строки вашего собственного конструктора. Это можно сделать, используя super() или 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
    }

}

Ответ 2

Первый оператор вашего конструктора должен быть вызовом конструктора суперкласса. Синтаксис:

super(pFn, pWidth, pHeight);

Вам решать, хотите ли вы, чтобы конструктор вашего класса имел одинаковые параметры и просто передал их конструктору суперкласса:

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

или передать что-то еще, например:

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

И не указывать тип возвращаемого значения для конструкторов. Это незаконно.

Ответ 3

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