构造函数 ClassCountry(String, String, String, int) 未定义



Eclipse一直说构造函数是未定义的 - 这里有什么问题?我已经检查了所有内容。

package exerciseOne;
public class TestCountryClass {
public static void main(String[] args) {
ClassCountry oCon1 = new ClassCountry("Iceland", "Icelandic", "króna", 400000);         
System.out.printf("%s %s %d%n", oCon1.getCountryName(),
oCon1.getCountryLanguage(),
oCon1.getCountryCurrency(),
oCon1.getCountryPopulation());
}
}

这是类的代码,我已经检查了多次,但 Eclipse 一直返回相同的错误消息。我希望你们能够在这里找到问题;任何帮助,不胜感激:

package exerciseOne;
public class ClassCountry {
private String countryName;
private String countryLanguage;
private String countryCurrency;
private int countryPopulation;
public void classCountry(String countryName, String countryLanguage, String countryCurrency, int countryPopulation)
{
this.countryName = countryName;
this.countryLanguage = countryLanguage;
this.countryCurrency = countryCurrency;
this.countryPopulation = countryPopulation;
}
public void setCountryName(String countryName)
{
this.countryName = countryName;
}
public String getCountryName()
{
return countryName;
}
public void setCountryLanguage(String countryLanguage)
{
this.countryLanguage = countryLanguage;
}
public String getCountryLanguage()
{
return countryLanguage;
}
public void setCountryPopulation(int countryPopulation)
{
this.countryPopulation = countryPopulation;
}
public int getCountryPopulation()
{
return countryPopulation;
}
public void setCountryCurrency(String countryCurrency)
{
this.countryCurrency = countryCurrency;
}
public String getCountryCurrency()
{
return countryCurrency;
}
}
public void classCountry(String countryName, String countryLanguage, String countryCurrency, int countryPopulation)
{
this.countryName = countryName;
this.countryLanguage = countryLanguage;
this.countryCurrency = countryCurrency;
this.countryPopulation = countryPopulation;
}

这是你的问题。您已将其添加为构造函数,但这不是构造函数。这是一个返回类型为 void 的方法。

将上述内容更改为:

public ClassCountry(String countryName, String countryLanguage, String countryCurrency, int countryPopulation)
{
this.countryName = countryName;
this.countryLanguage = countryLanguage;
this.countryCurrency = countryCurrency;
this.countryPopulation = countryPopulation;
}

有关构造函数的更多信息,可以查看此 Oracle 教程。

你的"构造函数"不是构造函数,因为它是一个方法。

classCountry更改为ClassCountry并删除空隙。

public ClassCountry(...
package com.String;
public class StackOverFlow {
public static void main(String[] args) {
ClassCountry oCon1 = new ClassCountry("Iceland", "Icelandic", "króna", 400000);         
System.out.printf("%s %s %s %d", oCon1.getCountryName(),
oCon1.getCountryLanguage(),
oCon1.getCountryCurrency(),
oCon1.getCountryPopulation());
}

private static class ClassCountry{
private String countryName;
private String countryLanguage;
private String countryCurrency;
private int countryPopulation;
public ClassCountry(String countryName, String countryLanguage, String countryCurrency, int countryPopulation) {
super();
this.countryName = countryName;
this.countryLanguage = countryLanguage;
this.countryCurrency = countryCurrency;
this.countryPopulation = countryPopulation;
}
public String getCountryName() {
return countryName;
}
public String getCountryLanguage() {
return countryLanguage;
}
public String getCountryCurrency() {
return countryCurrency;
}
public int getCountryPopulation() {
return countryPopulation;
}       
}
}

我想这会有所帮助

https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

类名是:ClassCountry。 构造函数名称应与 : public ClassCountry (( 相同。 但是,在您的情况下,您认为它应该是构造函数实际上并不是构造函数,而是被视为一个简单的方法。

因此,更正构造函数名称的拼写,并删除 void 部分。

此错误消息的原因是以下行:

public void classCountry(...

构造函数不能有返回值,因此您必须删除void。此外,构造函数必须与大写和小写的类定义匹配。因此,将行更改为

public ClassCountry(...

它会起作用。

你有一个名为 ClassCountry 的类,所以你的构造函数必须采用以下形式

public ClassCountry(args) {} 

Java是一种区分大小写的语言,因此classCountry不会与构造函数匹配,并且您的构造函数中也有一个空白,该构造函数创建一个没有返回值而不是构造函数的方法。

最新更新