在java中重写的概念

时间:2013-03-02 00:14:08

标签: java

超类中的方法适用于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");
    }
}

2 个答案:

答案 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");
        }
    }
}