在本书中,他们试图使用多态来使用数组对象创建自己的arrayList类。
我理解代码正在做什么,但它不允许编译,因为它们不是狗或猫类。 我把它们分别放在单独的文件中。
错误:动物无法解析为
public class MyAnimalList {
private Animal[] animals = new Animal[5];
private int nextIndex = 0;
public void add(Animal a ) {
if (nextIndex < animals.length) {
animals[nextIndex] = a;
System.out.println("Animal added at " + nextIndex);
nextIndex++;
}
}
}
//next snippet
public class AnimalTestDrive{
public static void main (String[]args) {
MyAnimalList list = new MyAnimalList():
Dog a = new Dog();
Cat c = new Cat();
list.add(a);
list.add(c);
}
}
答案 0 :(得分:0)
你是一个现代的IDE(例如eclipse)吗?或者你是从命令行做的吗?
**如果您不使用IDE,我强烈建议您在开始时这样做。它将帮助您更顺畅,更快速地前进。 **
如果您使用命令行工具编写程序,请仔细查看oracle documentation
特别是 -cp 参数
你必须提供一个文件夹,java可以在其中找到编译的类文件,这就是-cp用于的目的。对于您的情况,java似乎无法找到其他.class文件(Animal或Dog等)。
多态概念
狗,鱼和鸟都是动物。所以他们都继承了一些基本概念。例如,所有这些都移动了。然而,一条狗跑,一条鱼游,一只鸟飞。让我告诉你它是如何在OO中完成的:
abstract class Animal{
move();
}
class Dog extends Animal{
private run(){
...
// implementation
...
}
public move(){
run();
}
}
class Bird extends Animal{
private fly(){
...
implementation
}
public move(){
fly();
}
}
class Fish extends Animal{
private swim(){
...
implementation
}
public move(){
swim();
}
}
I hope it makes sense =]
PS:上面的代码是伪代码,不是Java
答案 1 :(得分:0)
1)必须创建一个公共动物类
2)必须创造一只狗和一只猫子类,两者都必须延伸动物。从动物身上延伸将允许狗和猫接受“添加”方法。
答案 2 :(得分:0)
好的,多态性的整个概念就是对象可以归类为更通用的对象。
例如:狗是动物,猫是动物,动物是生物
因此,Polymorphism允许您为一个类(Animal)定义一组通用特征(即字段和方法),以便在该类(Cats,Dogs,ect)下分类的所有其他类可以扩展这些特征。 / p>
现在您的代码无效的原因是因为您没有定义Dog或Cat类,所以您需要先创建具有某些属性的类动物:
public class Animal{
//some fields
//constructor
//methods
}
然后创建另外两个扩展它的类Dog和Cat(extend是一个关键词,意味着该对象属于该类别)
这样你就可以创建:
public class Dog extends Animal{
//some fields
//constructor
//methods
}
public class Cat extends Animal{
//some fields
//constructor
//methods
}