java入门 12 3\20

Java入门 12 3\20

多态性(Polymorphism):

  • 理解:可以理解为一个事物的多种形态。

  • 对象的多态性:父类的引用指向子类的对象(子类的对象赋给父类的引用)。

    ​ eg:声明为Person , new一个Man。

    ​ Person p2 = new Man();

  • 多态的使用:

      				1.  当调用**子父类同名同参数的方法**时,实际执行的是子类**重写父类的方法** ————***虚拟方法调用***。
      				2.  有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
    

    • 总结:编译,看左边; 运行, 看右边
  • 多态性的使用前提:

    1. 类的继承关系。
    2. 方法的重写。
  • 对象的多态性,只适用于方法, 不适用于属性 ,运行结果也是父类的方法。

虚拟方法调用

  • 虚拟方法调用(多态情况下):

    ​ 子类中定义了与父类同名同参数的方法,在多态情况下,将此时父类的方法称为虚拟方法,父类根据赋给它的不同子类对象,动态调用属于该子类的该方法。这样的方法调用在编译期是无法确定的。

有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用
eg: 编译时, p2时Person类型

小结:方法的重载和重写

在这里插入图片描述

向下转型的使用

在这里插入图片描述

  • 向下转型(使用强制类型转换符)
    1. () eg: Man m1 = (Man) p2;
  • 使用强转时,可能出现ClassCastException的异常。

instanceof关键字的使用

  • 使用情景:为了避免在向下转型时出现ClassCastException的异常。我们在向下转型之前进行instanceof的判断, 一旦返回true,就进行向下转型。如果返回false, 则不进行。

  • a instanceof A : 检验a是否为类A的实例(对象),返回值为Boolean型。

    1. 如果 a instanceof A 返回true ,则 a instanceof B 也返回 true。 (类B是类A的父类

    2. 要求a所属的类与类A必须是子类和父类的关系,否则编译错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值