Java多态

Java多态

Goose、Penguin继承基类Bird 三者都具有一个方法叫做introduce,用于介绍自己是谁

Java中使用后期绑定来实现多态
当向一个对象发送消息时,编译器在运行时期才能知道应该让该对象执行什么样的代码

Java中动态绑定是默认行为,不需要添加额外的关键字来实现多态
比如C++ 它需要用virtual关键字来后期绑定 从而实现多态

注意下面例子中多态的一个妙用

/**
 * 
 * @author runbin
 *
 * Java中使用后期绑定来实现多态
 * 当向一个对象发送消息时,编译器在运行时期才能知道应该让该对象执行什么样的代码
 * 
 * Java中动态绑定是默认行为,不需要添加额外的关键字来实现多态
 * 比如C++ 它需要用virtual关键字来后期绑定 从而实现多态
 * 
 */

public class Main {
    public void doSomething(Bird bird) {
        bird.introduce();
    }

    public static void main(String[] args) {
        Bird bird = new Bird();
        Bird goose = new Goose();
        Bird penguin = new Penguin();
        bird.introduce();
        goose.introduce();
        penguin.introduce();
        System.out.println("--------------");

        // 多态的一个妙用 不用管传入对象的确切类型 都当作基类看待
        // 都能够自动地正确执行
        // 这样可以使程序猿从必须知道确切类型中解放出来

        Main main = new Main();
        main.doSomething(bird);
        main.doSomething(goose);
        main.doSomething(penguin);
    }
}
public class Bird {
    public Bird() {

    }

    public void introduce() {
        System.out.println("I am Bird!");
    }
}

public class Goose extends Bird{
    public Goose() {

    }

    public void introduce() {
        System.out.println("I am goose");
    }
}

public class Penguin extends Bird {
    public Penguin() {

    }

    public void introduce() {
        System.out.println("I am penguin");
    }
}

你可能感兴趣的:(Java编程思想,Java,多态)