java面向对象三大特性---多态

多态

根据调用方法不同而产生不同的结果称为“多态”

多态分为编译时多态和运行时多态。

编译时多态

package org.oop.demo06;

class Test {
    void print(){
        System.out.println("Hello");
    }
    void  print(String x){
        System.out.println("hello" + x);
    }
    public static void main(String []args){
        Test ts = new Test();
        ts.print();     // hello
        ts.print("jack");   //  hellojack
    }

}

编译时,代码会根据你调用的参数列表动态决定调用哪一个函数

 

运行时多态

  形成条件: 有继承关系、子类重写父类、父类指向子类对象

package org.oop.demo06;
//运行时多态
//多态的形成
class Animal {
    void run(){
        System.out.println("animal is running...");
    }

    void eat(){
        System.out.println("animal is eat...");
    }
}

// 子类继承父类
class Dog extends Animal {
    // 子类重写父类
    void run(){
        System.out.println("Dog is running...");
    }
}


class Cat extends Animal {
    void run(){
        System.out.println("cat is running...");
    }

    void eat(){
        System.out.println("cat is eatting...");
    }
}

public class AnimalDemo{
    public static void main(String[] args){
        //父类引用指向子类
        //父类不能调用子类新增的方法
        Animal dog = new Dog();
        Animal cat = new Cat();
        dog.run();                  // Dog is running...
        dog.eat();                  // animal is eat...
        System.out.println("--------");
        cat.run();                  // cat is running...
        cat.eat();                  // cat is eatting...

    }
}

一个类只能由一个父类,不能多继承。一个父类可以多个子类,子类能重写父类的方法。调用同个方法产生不同的结果就是多态

优点:多态提高了代码的复用性,提供更高的可托充性,以及可维护性

 

posted @ 2021-12-17 18:33  一杯咖啡钱  阅读(57)  评论(0)    收藏  举报