Java-多态性-instanceof关键字的使用

一、多态性

若编译时类型和运行时类型不一致,就出现了对象的多态性(运行时类型)

  • 1.理解多态性:可以理解为一个事物的多种形态
  • 2.对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
  • .多态性的使用前提:1.类的继承关系 2.方法的重写
  • 对象的多态性,只适用于方法,不适用于属性(编译运行都看左边)

二、多态性的应用

在这里插入图片描述在这里插入图片描述

多态小结

  • .多态作用提高了代码的通用性,常称作接口重用
  • 前提:一、类的继承二、方法重写
  • 成员方法(类的方法):
    编译时:要查看引用变量所声明的类中是否有所调用的方法。
    运行时:调用实际new的对象所属的类中的重写方法
  • 成员变量(类的属性):
  • 不具备多态性,只看引用变量所声明的类

三、instanceof的使用

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

  • a instanceof A:判断对象a是否是类A的实例

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

  • 举例一:
    Person p3 = new Woman();
    Man m3 = (Man)p3;//不同子类

  • 举例二:
    Person p4 = new Person();
    Man m4 = (Man)p4;//new的必须是下面的类,功能多

  • 举例三:
    Object obj = new Woman();
    Person p = (Person)obj;//可以
    在这里插入图片描述

发布了36 篇原创文章 · 获赞 1 · 访问量 499

猜你喜欢

转载自blog.csdn.net/weixin_45821690/article/details/104970704