Java多态
一种事物往往存在多种形态,多态是同一行为有不同的表现形式,也就是说相同的事物,调用其相同的方法,参数也可以相同,但表现的行为却不同
实现多态的三个必要条件
①类的继承关系
②子类重写父类方法
③向上转型
创建Pokemon类作为父类,皮卡丘和喷火龙继承Pokemon类
子类继承了父类,并重写了父类中的skills()方法
测试类
对象的多态性
父类的引用指向子类对象(或子类对象赋给父类的引用)

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

对象调用父类的方法,通过过父类的引用指向子类对象的实体,调用方法时,实际执行的是子类重写父类的方法
虚拟方法
子类中定义了与父类同名同参的方法,在多态的情况下,将此时的父类方法称为虚拟放法,父类根据赋给它的不同子类对象,动态调用属于子类的该方法(动态绑定)
注:多态性只适用于方法,不适用于类的属性
通过p1对象,对喷火龙设置属性haveMaster时,编译器会提示该属性无法解析

多态的应用
在测试类中定义showPokemon()方法,展示精灵信息
该方法中Pokemon类作为形参传入,尽管在测试类中传入一个皮卡丘对象,以及一个喷火龙对象,编译运行都没有问题,只要传入的对象是Pokemon的子类即可
向上转型

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

向下转型后p对象可以获取Pikachu类中的特有属性与方法
注:使用向下转型时,可能会抛出异常,使用关键字instanceof判断是否可以向下转型
instanceof关键字
A instanceof a :判断对象A是否是类的实例,返回值为boolean类型

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

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












