我试图在类目录中形成对象Mammal的getter方法。 get方法没有参数,并且返回类型为Mammal(?)
public class Mammal extends Animal {
private double intellect;
private double hitpoints;
public Mammal(String firstName, String lastName, String nickname) {
super(firstName, lastName, nickname);
}
public void setIntellect(double intellect) {
this.intellect = intellect;
}
public void setHitpoints(double hitpoints) {
this.hitpoints = hitpoints;
}
public double getIntellect() {
return intellect;
}
public double getHitpoints() {
return hitpoints;
}
我知道这是一个非常简单的问题,你没有必要看到它,只是给出了背景。我编写了几个像Mammal这样的类,比如Feline,Birds等,它是作业的最后一部分,Catalog,一系列get方法。我只需要getMammal,getBirds,getFeline,返回类型是Mammal,或Birds []等。所以对象本身或对象数组。我的尝试:
public class Catalogue{
private Mammal mam;
public getMammal() {
Mammal mam = new Mammal();
return mam;
}
}
所以我显然不明白在这一步做什么。任何帮助,将不胜感激!我得到的编译错误是"无效的方法声明;需要返回类型"。我以几种不同的方式尝试,但似乎无法克服此错误。
答案 0 :(得分:2)
我认为你需要的东西看起来像这样:
public class Catalogue
{
private Mammal mammal;
private Bird[] birds;
public Catalogue(Mammal mammal, Bird[] birds)
{
this.mammal = mammal;
this.birds = birds;
}
public Mammal getMammal()
{
return mammal;
}
public Bird[] getBirds()
{
return birds;
}
}
这会创建一个包含实例变量Catalogue
和mammals
的{{1}},并允许您获取这些值。
然后构建一个birds
,你打电话:
Catalogue
其中Catalogue c = new Catalogue(mammal, birds);
是mammal
的实例,而Mammal
是birds
的实例。
答案 1 :(得分:0)
替换
public getMammal() {
Mammal mam = new Mammal();
return mam;
}
通过
public Mammal getMammal() {
Mammal mam = new Mammal();
return mam;
}
您需要明确并定义getter方法的返回类型,以及任何非构造函数方法。
您可能认为这很明显,因为您明确返回Mammal
,但Java强烈且明确地键入。
有些编程语言可以通过检查代码来推断方法的返回类型,但Java不是其中之一。
例如,Scala是强类型的,但通常可以推断出返回类型的方法是什么。答案 2 :(得分:0)
public Mammal getMammal() {
Mammal mam = new Mammal();
return mam;
}
你必须写下你将要返回的对象类型。并在括号中写下#34;新的哺乳动物(firstName,lastName,昵称)"
答案 3 :(得分:0)
如果我理解正确,那么这个Catalog类应该是创建你创建的All the Animal类型的实例的东西..其中一个解决方案很简单,就像:
public class Catalogue{
public Mammal getMammal() {
return new Mammal();
}
}
您不需要Catalog来保存实例。另一个通用解决方案是:
public class Catalogue{
public static Animal getAnimalByType(Class type) {
return type.newInstance();
}
}
当你打电话给你时,你会知道类型..所以这将是通用的。
Mammal m = (Mammal) Catalogue.getAnimalByType(Mammal.class);
投射是必需的,因为在你的泛型类型中你将返回Animal,所以这将是通用的并适用于所有动物类型..当你调用该方法时,你知道你想要什么样的动物。因为你传递了这个作为构造函数中的参数
希望有所帮助..当然,这可能会更复杂,但现在可以完成这项工作。
编辑:
为了创建新的Mammal实例,您还需要添加construtor:
public class Mammal extends Animal {
private double intellect;
private double hitpoints;
public Mammal() {
super();
}
public Mammal(String firstName, String lastName, String nickname) {
super(firstName, lastName, nickname);
}
public void setIntellect(double intellect) {
this.intellect = intellect;
}
public void setHitpoints(double hitpoints) {
this.hitpoints = hitpoints;
}
public double getIntellect() {
return intellect;
}
public double getHitpoints() {
return hitpoints;
}