Java实际参数与正式参数不匹配,但它们呢?

neb*_*uch 6 java inheritance constructor arguments

我有一个扩展实体的类播放器:

玩家:

public class Player extends Entity {
    public Player(char initIcon, int initX, int initY) {
        //empty constructor
    }
...
Run Code Online (Sandbox Code Playgroud)

实体:

public Entity(char initIcon, int initX, int initY) {
        icon = initIcon;
        x = initX;
        y = initY;
    }
...
Run Code Online (Sandbox Code Playgroud)

这几乎是你所期望的,但在编译时我得到一个错误

Player.java:2: error: constructor Entity in class Entity cannot be applied to the given types:
    public Player(char initIcon, int initX, int initY)
required: char,int,int
found: no arguments
reason: actual and formal argument lists differ in length
Run Code Online (Sandbox Code Playgroud)

但它显然确实有必要的论据.这里发生了什么?谢谢!

Nik*_*sov 13

你需要通过调用它的构造函数来初始化超类 super

public Player(char initIcon, int initX, int initY) {
    super(initIcon, initX, initY);
}
Run Code Online (Sandbox Code Playgroud)


Per*_*ror 7

你的超类构造函数有3个参数,似乎没有空构造函数.因此,您的子类构造函数应该对传递值的超类构造函数进行显式调用.

public class Player extends Entity {
    public Player(char initIcon, int initX, int initY) {
        //empty constructor
        super(initIcon,initX,initY);
    }
...
Run Code Online (Sandbox Code Playgroud)