暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java多态

初始化 2021-03-21
492

Java多态

一种事物往往存在多种形态,多态是同一行为有不同的表现形式,也就是说相同的事物,调用其相同的方法,参数也可以相同,但表现的行为却不同


实现多态的三个必要条件

①类的继承关系

②子类重写父类方法

③向上转型


创建Pokemon类作为父类,皮卡丘和喷火龙继承Pokemon类

子类继承了父类,并重写了父类中的skills()方法


测试类

对象的多态性

父类的引用指向子类对象(或子类对象赋给父类的引用)


多态的使用(虚拟方法的调用)

对象调用父类的方法,通过过父类的引用指向子类对象的实体,调用方法时,实际执行的是子类重写父类的方法


虚拟方法

子类中定义了与父类同名同参的方法,在多态的情况下,将此时的父类方法称为虚拟放法,父类根据赋给它的不同子类对象,动态调用属于子类的该方法(动态绑定)


注:多态性只适用于方法,不适用于类的属性

通过p1对象,对喷火龙设置属性haveMaster时,编译器会提示该属性无法解析


多态的应用

在测试类中定义showPokemon()方法,展示精灵信息


该方法中Pokemon类作为形参传入,尽管在测试类中传入一个皮卡丘对象,以及一个喷火龙对象,编译运行都没有问题,只要传入的对象是Pokemon的子类即可


向上转型

注:向上转型不同于自动类型提升,向上转型针对的是类


向下转型

向下转型后p对象可以获取Pikachu类中的特有属性与方法

注:使用向下转型时,可能会抛出异常,使用关键字instanceof判断是否可以向下转型


instanceof关键字

A instanceof a :判断对象A是否是类的实例,返回值为boolean类型


instanceof关键字的使用,避免了向下转型时的异常



实用青年



文章转载自初始化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论