【发布时间】:2017-09-08 01:16:54
【问题描述】:
例如,我有这个代码,我有一个超级抽象类动物和一个抽象子类鸟,以及鸟 AmericanRobin 的子类,我想在美国知更鸟中填充数据以从动物创建对象鸟,但我没有知道怎么做,因为我想创建另一个名为家养金丝雀的鸟子类,并将值从他的构造函数传递给他的超类构造函数来创建一个对象,有什么建议吗??
public abstract class Animal {// SuperClass animal
private String Kind,Appearance;
Animal(String Kind,String Appearance) {
this.Kind = Kind;
this.Appearance = Appearance;
}
public abstract void eat();
public abstract void move();
@Override public String toString() {
return "("+Kind+","+Appearance+")";
}
public abstract class Bird extends Animal {//SubClass of superClass Animal
Bird(String Kind, String Appearance) {
super(Kind, Appearance);
}
@Override public void eat() {
System.out.println("Eats seeds and insects");
}
@Override public void move() {
System.out.println("Flies throught the air");
}
}
public abstract class Fish extends Animal{//SubClass of SuperClass Animal
Fish(String Kind, String Appearance){
super(Kind,Appearance);
}
@Override public void eat() {
System.out.println("Eats krill, algae and insects");
}
@Override public void move() {
System.out.println("Swims throught the water");
}
}
//== Here the pain begins ==
public class AmericanRobin extends Bird {
AmericanRobin(String Kind, String Appearance) {
super(Kind, Appearance);
}
}
public class DomesticCanary extends Bird{
DomesticCanary(String Kind, String Appearance) {
super(Kind, Appearance);
}
}
}
【问题讨论】:
-
什么不适合你,请解释一下。你会得到什么错误,或者你的预期与实际输出是什么。
-
创建与鸟类一样多的类是一种矫枉过正的做法。您应该创建
Animal americanCan=new Bird("American Canary","Brownish may be")和Animal domesticCan=new Bird("Domestic Canary", "Very colourful")等...如果需要添加另一个数据成员/变量说genus可能是(与kind和appearance一起) -
嗯,这是一个练习,我有一个抽象的主类和其他抽象类的动物,动物->鸟和鱼->鸟和鱼的种类。通过声明 Animal、Bird、Fish、AmericanRobin、DomesticCanary、RainbowTrout 和 SockeyeSalmon 类来模拟动物层次结构的一部分:
标签: java inheritance abstract