编译时多态性和运行时多态分别指什么?

215次阅读
没有评论

共计 928 个字符,预计需要花费 3 分钟才能阅读完成。

什么是多态

  • 允许不同子类型的对象对同一消息作出不同的响应,换句话说就是同一个对象引用调用相同的方法,而该方法实现方式不同,运行得到的结果也就会不同;

编译时多态(也叫前绑定)

方法重载(overload)

 /**
 * @author plm
 * @create 2021/3/1 23:40
 */
class OperatorNumber {

    void print(int a, int b) {
        System.out.println("int : " + (a + b));
    }

    void print(long a, long b) {
        System.out.println("long : " + (a + b));
    }

    void print(String a, String b) {
        System.out.println("String : " + (a + b));
    }
}

class Demo {
    public static void main(String[] args) {
        OperatorNumber operatorNumber = new OperatorNumber();
        operatorNumber.print(1, 4);
        operatorNumber.print(2L, 5L);
        operatorNumber.print("2", "2");
    }
}

/* 输出
int : 5
long : 7
String : 22
 */

运行时多态(也叫后绑定)

方法重写(override)

class Animal {
    public void eat() {
        System.out.println("动物吃东西");
    }
}

class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("狗啃骨头");
    }
}

class AnimalDemo {
    public static void main(String[] args) {
        //运行时多态
        Animal a = new Cat();
        a.eat();

        a = new Dog();
        a.eat();
    }
}

/* 输出
猫吃鱼
狗啃骨头
 */
运行时多态的前提
  1. 要有继承或实现关系
  2. 要有方法的重写
  3. 要有父类引用指向子类对象
正文完
 
裴先生
版权声明:本站原创文章,由 裴先生 2021-03-01发表,共计928字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: