√ JavaSE - 06.怎么实现多态(卷1 P155)

  1. 多态的实现基于类的继承方法的重写,即使用父类变量指向子类对象,编译时调用父类被重写的方法,运行时执行子类重写的方法,因此多态发生在运行时
  2. 对于重载,编译器在方法调用之前就确定所要调用的方法,称为静态绑定;对于多态,编译器在方法调用之时才确定所要调用的方法,称为动态绑定
  3. 抽象类接口存在的意义依赖于多态。
  4. 父类变量不能直接调用子类对象特有的属性和方法,需要先通过强制类型转换将父类变量赋给子类变量,再通过子类变量才能调用子类对象特有的属性和方法。
  5. 为了避免在向下转型时出现异常,通常先利用关键字instanceof判断父类变量之前指向的是否是对应的子类对象。
public class Polymorphic {
    public static void main(String[] args) {
        Test1 test12 = new Test2();
        Test1 test13 = new Test3();
        Test.print(test12);
        Test.print(test13);
        if (test12 instanceof Test2) {
            Test2 test2 = (Test2) test12;
            test2.print2();
        }
        if (test13 instanceof Test3) {
            Test3 test3 = (Test3) test13;
            test3.print2();
        }
    }
}

class Test {
    public static void print(Test1 test1) {
        test1.print1();
    }
}

class Test1 {
    public void print1() {
        System.out.println("Test1.print1");
    }
}

class Test2 extends Test1 {
    @Override
    public void print1() {
        System.out.println("Test2.print1");
    }

    public void print2() {
        System.out.println("Test2.print2");
    }
}

class Test3 extends Test2 {
    @Override
    public void print1() {
        System.out.println("Test3.print1");
    }

    @Override
    public void print2() {
        System.out.println("Test3.print2");
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值