class Animal {
}
class Horse extends Animal {
}
public class Test {
public static void main(){
Animal a = new Horse();//mark1
}
}
Animal ah = new Horse();// reference type is Animal and object is Horse
我无法完全理解以下内容:
Animal ah = new Horse();//引用类型为Animal,对象为Horse
我始终保持引用类型与对象相同
我想知道使用不相同引用类型的原因。请告诉我一些使用它更合适的条件
最佳答案
这适用于多种情况,一个简单的例子是如果您需要一组动物:
Animal array[] = new Animal[3];
array[0] = new Horse();
array[1] = new Cow();
array[2] = new Animal();
您可以定义一些通用方法,或者为每个扩展的类指定它们。
public class Cow extends Animal {
public void sound() {
System.out.println("MOO");
}
}
public class Horse extends Animal {
public void sound() {
System.out.println("HEEEHREHE");
}
}
在《动物》中,你不知道要做什么,所以你可以使用类似的东西
public class Animal {
public void sound() {
System.out.println(".");
}
}
问题是,如果您遍历数组中的每只动物,它将使用为其定义的方法。
for (int i = 0; i < 3; i++) {
array[i].sound();
}
将输出:
HEEEHREHE
MOO
.
关于java - 为什么java中引用类型可以与对象类型不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597203/