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) {
//}
}
как я могу написать правильный синтаксис?
и ошибка: "конструктор не может применяться к заданным типам"
Ответы
Ответ 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);
}
}