[英]Java Polymorphism “cannot be applied to given types”
我正在尝试让我的程序说:
小鸡goes
猪去了
Elsie mo
美女去mo
但我不断收到2个错误,即:
错误:类NamedCow中的构造函数NamedCow无法应用于给定类型;
有什么办法可以修复它,以便我的程序可以输出以下内容:
小鸡goes
猪去了
Elsie mo
美女去mo
import static java.lang.System.*;
import java.util.*;
public class Java5203{
public static void main(String[] args) {
new Environment();
}}
class Environment
{
Farm mcDonald;
public Environment()
{
mcDonald = new Farm();
run();
}
public void run()
{
out.println();
mcDonald.animalSounds();
out.println();
}
}
class Farm
{
ArrayList<Animal> liveStock = new ArrayList<Animal>();
public Farm()
{
liveStock.add( new Chick() );
liveStock.add( new Pig() );
liveStock.add( new NamedCow("Elsie") );
liveStock.add( new NamedCow("Bell") );
}
public void animalSounds()
{
for(int i=0;i<liveStock.size();i++)
{
out.println(liveStock.get(i).getType() + " goes " + liveStock.get(i).getSound());
}
}
}
abstract class Animal
{
protected String myType;
protected String mySound;
public abstract String getSound();
public abstract String getType();
}
class Cow extends Animal
{
Cow()
{
myType = "cow";
mySound = "moo";
}
public String getSound()
{
return mySound;
}
public String getType()
{
return myType;
}
}
class Chick extends Animal
{
Chick()
{
myType = "chick";
mySound = "chirp chirp";
}
public String getSound()
{
return mySound;
}
public String getType()
{
return myType;
}
}
class Pig extends Animal
{
Pig()
{
myType = "pig";
mySound = "oink";
}
public String getSound()
{
return mySound;
}
public String getType()
{
return myType;
}
}
class NamedCow extends Cow
{
public String getSound()
{
return mySound;
}
public String getType()
{
return myType;
}
}
您正在调用NamedCow构造函数,并传入String参数,
liveStock.add( new NamedCow("Elsie") );
但这个类没有构造,需要一个String参数,而实际上类NamedCow没有构造函数的 。
解决方案: 给它一个构造函数,该构造函数接受String并使用它来设置字段。 例如,
public class Foo {
private String bar;
public Foo(String bar) {
this.bar = bar;
}
// getters, setters, other methods,...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.