Java, расширение класса с помощью конструктора основного класса имеет параметр - PullRequest
24 голосов
/ 13 января 2010

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

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

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) {
    //}
}

как мне написать правильный синтаксис? и ошибка «конструктор не может быть применен к данным типам»

Ответы [ 3 ]

40 голосов
/ 13 января 2010

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

}
4 голосов
/ 13 января 2010

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

super(pFn, pWidth, pHeight);

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

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

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

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

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

1 голос
/ 13 января 2010
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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...