超类中的方法适用于java中的所有子类....如果子类有自己的独立方法,我该如何使它工作...
class Polymorphism3 {
public static void main(String[] args) {
// note how these are all considered objects of type Animal by Java
Animal[] a = new Animal[4];
a[0] = new Mouse();
a[1] = new Bird();
a[2] = new Horse();
a[3] = new Animal();
for (int i=0;i<4;i++) {
a[i].pullTail();
}
//...
class Animal {
public void pullTail() {
System.out.println("I don't know what to say.");
}
}
class Mouse extends Animal {
public void pullTail() {
System.out.println("fart");
}
}
class Bird extends Animal {
public void pullTail() {
System.out.println("tweet");
}
public void fly() {
System.out.println("flap");
}
}
class Horse extends Animal {
public void pullTail() {
System.out.println("neigh");
}
}
答案 0 :(得分:1)
如果未在Animal中声明,则无法使其正常工作 唯一的方法是将Animal转换为Bird,例如
((鸟)一[1])飞();
你也可以从Bird的putTail实现中调用它。
答案 1 :(得分:1)
如果这不能实例化嵌套类:你需要一个封闭类的对象:
public class Polymorphism3 {
public static void main(String[] args) {
// note how these are all considered objects of type Animal by Java
Animal[] a = new Animal[4];
Polymorphism3 poly = new Polymorphism3();
a[0] = poly.new Mouse();
a[1] = poly.new Bird();
a[2] = poly.new Horse();
a[3] = poly.new Animal();
for (int i = 0; i < 4; i++) {
a[i].pullTail();
}
}
class Animal {
public void pullTail() {
System.out.println("I don't know what to say.");
}
}
class Mouse extends Animal {
public void pullTail() {
System.out.println("fart");
}
}
class Bird extends Animal {
public void pullTail() {
System.out.println("tweet");
}
public void fly() {
System.out.println("flap");
}
}
class Horse extends Animal {
public void pullTail() {
System.out.println("neigh");
}
}
}