Java基础-多态

多态:多种形态

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

1.编译时多态:方法重载(overload),相同的方法名,传入不同类型的参数

private int addition(int a, int b) {
    return a + b;
}
private int addition(double a, int b) {
    return (int) (a + b);
}
private int addition(int a, int b, int c) {
    return a + b + c;
}

2.运行时多态:子类继承父类,子类重写(override)父类方法

// 父类
public class Animal {

    public void run() {
        System.out.println("Animal running");
    }

    public void eat() {
        System.out.println("Animal eating");
    }

}

// 子类继承父类,只重写run方法
public class Cat extends Animal {

    @Override
    public void run() {
        System.out.println("Cat running");
    }

}

// 子类继承父类,重写run和eat方法
public class Dog extends Animal {

    @Override
    public void run() {
        System.out.println("Dog running");
    }

    @Override
    public void eat() {
        System.out.println("Dog eating");
    }

}

运行时多态的实现机制

  • JVM方法区
  • InvokeVirtual指令
  • 方法表(存放方法入口地址)

 

 

posted @ 2021-04-10 12:00  只看一会  阅读(64)  评论(0)    收藏  举报