gpt4 book ai didi

java - super() 不让我用参数调用 super 构造函数

转载 作者:行者123 更新时间:2023-12-03 20:50:17 28 4
gpt4 key购买 nike

我想调用带有两个参数的父类(super class)的构造函数,所以我调用了 super(arguments),但是编译器说:

“类 Person 中的构造函数 Person 不能应用于给定类型;
要求:无参数
发现:Java.lang.String, int
原因:实际和形式参数列表的长度不同"

我不知道为什么会这样。对 super 的调用是第一行。参数匹配(但由于某种原因不匹配编译器)。有谁知道这是怎么回事吗?

顺便说一句,我正在使用 NetBeans。最新版本。

编辑:我卸载了 NetBeans,安装了 Eclipse,现在一切正常。我不知道,也永远不会知道,为什么 NetBeans 会给我一个错误。感谢大家的帮助。

public class Person
{
private String name;
private int age;


public Person() { name = " "; age = 0; }
public Person(String nm, int ag) { name = nm; age = ag; }
}


public class BaseballPlayer extends Person
{
private int homeruns;
private double bat_avg;


BaseballPlayer()
{
super();
homeruns = 0;
bat_avg = 0;
}

BaseballPlayer(String name, int age, int hr, double bavg)
{
super(name, age); // THIS CAUSES AN ERROR. I DON'T KNOW WHY
homeruns = hr;
bat_avg = bavg;
}
}

最佳答案

顺便说一句,恕我直言,这样做更好:

public class Person
...
public Person() {
this("", 0); // No-args constructor calls the arg'd version with default values
}

public Person(String nm, int ag) {
name = nm;
age = ag;
}
...
}

这意味着一切都通过一个构造函数。如果您必须在构造函数中添加任何内容,您只有一个地方可以进行更改。

关于java - super() 不让我用参数调用 super 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7142856/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com