您的位置:首页 > 编程语言 > Java开发

Java多态

2018-12-07 11:22 113 查看

Java多态

  • 运行时多态性。

  • Java有两种多态

    编译时多态性。

    方法重载为编译多态,当方法名相同时,由编译器决定执行那个方法。

    class Add{
    int add(int num1,int num2){
    return num1 + num2;
    }
    int add(int num1,int num2,int num3){
    int num1 + num2 + num3;
    }
    }

    该方法有编译器决定执行哪个add()方法,所以就是编译时的多态

    重写方法的编译时多态。

    当重写父类方法时,编译器决定执行子类的方法,也是编译时的多态。

    public class Polymorphism{
    
    public static void main(String[] args) {
    Person p = new Person();                                    //对象引用本类实例
    Man m = new Man();                                            //编译时多态,执行Person类的toString()
    System.out.println(p.toString());
    System.out.println(m.toString());                          //编译时多态,执行Man类的toString()
    }
    }
    
    class Person{
    public String toString() {
    String name = "Person";
    return name;
    }
    }
    
    class Man extends Person{
    public String toString(){
    String name = "Man";
    return name;
    }
    }

    运行时多态性。

    我们创建两个类:Bike和Splendar。 Splendar类扩展Bike类并覆盖其run()方法。通过父类(Bike)的引用变量调用run方法。 因为它引用子类对象,并且子类方法覆盖父类方法,子类方法在运行时被调用。
    class Bike {
    void run() {
    System.out.println("running");
    }
    }
    
    class Splender extends Bike {
    void run() {
    System.out.println("running safely with 60km");
    }
    
    public static void main(String args[]) {
    Bike b = new Splender();// upcasting - 向上转换
    b.run();
    }
    }

    输出结果

    running safely with 60km.
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: