多态的好处和instanceof关键字
多态的好处
class Animal{ public void show(){ System.out.println("。。。"); } } class Panda extends Animal{ @Override public void show() { System.out.println("熊猫"); } } class Dog extends Animal{ @Override public void show() { System.out.println("狗"); } } class Food{ public void show(){ System.out.println("。。。"); } } class Bamboo extends Food{ @Override public void show() { System.out.println("竹子"); } } class meat extends Food{ @Override public void show() { System.out.println("肉"); } }
class Feed{ public void feeder(Animal a,Food f){ a.show(); f.show(); } }
public static void main(String[] args) { Animal a = new Panda(); Food f = new Bamboo(); Animal a1 = new Dog(); Food f1 = new meat(); Feed feed = new Feed(); feed.feeder(a,f); feed.feeder(a1,f1); }
我们通过创建动物类和事物类,创建这两个类的子类继承父类并重写父类方法,再创建展示类,用来接收传递的动物类对象以及事物类对象,
只要在创建对象时使用父类引用子类对象的方式创建,并将创建的对象传递给展示类中的方法,就可以想要创建哪个类都可以
多态的好处:
1、简化代码
2、提高了可扩展性
3、提高了程序的可维护性
instanceof关键字
多态中的类型转换
向上转型(自动转换)
格式:<父类型><引用变量名>= new<子类型>();
特点:
子类转为父类父类的引用指向子类对象。
自动进行类型转换此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法此时通过父类引用变是无法调用子类特有的属性和方法
向下转型(强制转换)
格式:<子类型><引用变量名>=(<子类型>)<父类型的引用变量>;
特点:
父类转为子类,父类引用转为子类对象。
强制类型转换 在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常
如果没有转换为真实子类类型,会出现类型转换异常
class Person{ public void eat(){ System.out.println("。。。"); } } class Stundet extends Person{ @Override public void eat() { System.out.println("学生类吃"); } public void study(){ System.out.println("学习"); } } class Doc extends Person{ @Override public void eat() { System.out.println("子类吃"); } }
public static void main(String[] args) { Person p = new Stundet(); p.eat(); Stundet s = (Stundet) p; s.study(); Doc d = (Doc)p; }
类型转换错误:
instanceof关键字用来测试它左边的是否是右边的类的实例,返回值为boolean类型
public static void main(String[] args) { Person p = new Stundet(); p.eat(); if (p instanceof Stundet){ Stundet s = (Stundet) p; s.study(); }else if (p instanceof Doc){ Doc d = (Doc)p; } }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix