JAVA——多态

本文详细阐述了Java中的多态概念,包括其定义、表现形式、前提条件、优势(如扩展性和解耦)以及局限性(如不能调用子类特有功能)。还介绍了`instanceof`关键字在类型判断和强转换中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态: 同类型的对象,表现出的不同形态

简单理解:多态可以理解为用父类去创建子类对象

多态的表现形式: 父类类型 对象名称 = 子类对象

多态的前提:

        有继承/实现关系;

        有父类引用指向子类对象 Fu f = new Zi();

        有方法重写

多态的好处:

        使用父类型作为参数,可以接收所有的子类对象

        体现多态的扩展性与便利

多态调用成员的特点:

        变量调用:编译看左边,运行也看左边

        方法调用:编译看左边,运行看右边

多态的优势:

        多态形式下,右边对象可以实现解耦合,便于扩展和维护

        定义方法的时候,使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利

多态的弊端:

        不能调用子类的特有功能

        编译时会先检查左边的父类中有没有这个方法,如果没有直接报错

解决方案:变回子类类型

        Person ps = new Student(); //只能转换为Student型(new后面),不能转换为其他类型

        Student b = (Student)s; //强制类型转换

判断类型——关键字instanceof

instance作用:

{判断对象实例:instanceof是Java中的一个二元运算符,它的主要作用是测试一个对象是否为特定类的实例或这个类的子类的实例。如果对象是该类的一个实例,或者是其子类的实例,那么instanceof将返回true;否则返回false。如果该对象为null,则instanceof也返回false。
类型检查:除了用于判断对象的类实例关系外,它还可以用来检查一个对象是否实现了某个接口。这在处理复杂的数据结构和抽象数据类型时非常有用}

        if(ps instanceof Student){     //判断是否是Student类型

                Student b = (Student)s;

        }else if(ps instanceof Teacher){

                Teacher b = (Teacher)s;

        }else if(ps instanceof Administrator){

                Administrator b = (Administrator)s;

        }

新特性:

 if(ps instanceof Student b){

          //先判断是否为Student类型 如果是,则强转换为Student类型,转换之后变量名为b

          b.Stutest();

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值