繁体   English   中英

在java中覆盖的概念

[英]Concept of overridding in 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");
    }
}

如果未在Animal中声明,则无法使其正常工作。
唯一的方法是将动物转化为鸟类如

((鸟)一[1])飞();

你也可以从Bird的putTail实现中调用它。

如果这是无法实例化嵌套类:你需要一个封闭类的对象:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM