资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
多态定义:某一类事物的多种存在形态。例:动物中猫,狗。猫这个对象对应的类型是猫类型:猫 x = new 猫();同时猫也是动物中的一种,也可以把猫称为动物:动物 y = new 猫();动物是猫和狗具体事物中抽取出来的父类型。父类型引用指向了子类对象。多态性简单说就是一个对象对应着不同类型。体现:父类或者接口的引用指向或者接收自己的子类对象。作用:多态的存在提高了程序的扩展性和后期可维护性。前提:1. 需要存在继承或者实现关系。2. 需要有覆盖操作。好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容。弊端:前期定义的内容不能使用(调用)后期子类的特有内容。示例 1:1.abstract class Animal2. abstract void eat();3.4.5.class Dog extends Animal6. void eat()7. System.out.println(“啃骨头“);8. 9. void lookHome()10. System.out.println(“看家“);11. 12.13.14.class Cat extends Animal15. void eat()16. System.out.println(“吃鱼“);17. 18. void catchMouse()19. System.out.println(“抓老鼠“);20. 21.22.23.class Pig extends Animal24. void eat()25. System.out.println(“饲料“);26. 27. void gongdi()28. System.out.println(“拱地“);29. 30.31.32.class DuoTaiDemo33. public static void main(String args)34. Cat c = new Cat();35. Dog d = new Dog();36.37. method(c);38. method(d);39. method(new Pig();40. 41.42. public static void method(Animal a)43. a.eat();44. 45.复制代码运行结果:示例 2:1.class DuoTaiDemo2. public static void main(String args)3. /自动类型提升,猫对象提升到了动物类型。但是特有功能无法访问,作用就是限制对特有功能的访问。4. /专业讲:向上转型,将子类型隐藏。就不能使用子类的特有方法了。5. Animal a = new Cat();6. a.eat();7. /a.catchMouse();/报错8.9. /如果还想用具体动物猫的特有功能。10. /你可以将该对象进行向下转型。11. Cat c = (Cat)a; /向下转型的目的是为了能够使用子类中的特有方法。12. c.eat();13. c.catchMouse();14.15. /注意:对于转型,自始至终都是子类对象在做类型的变化。16. /Animal a = new Dog();17. /Cat c = (Cat)a;/但是类型不能随意转换,否则可能会报出ClassCastException 的异常18. 19.20. public static void method(Animal a)21. a.eat();22. 23.24.复制代码运行结果:示例 3:1./*2.毕老师和毕姥爷的故事3.*/4.class 毕姥爷5. void 讲课()6. System.out.println(“管理“);7. 8. void 钓鱼()9. System.out.println(“钓鱼“);10. 11.12.13.class 毕老师 extends 毕姥爷14. void 讲课()15. System.out.println(“Java“);16. 17. void 看电影()18. System.out.println(“看电影“);19. 20.21.22.class DuoTaiDemo23. public static void main(String args)24. 毕老师 x = new 毕老师();25. x.讲课(); /Java26. x.看电影(); /看电影27.28. 毕姥爷 y = new 毕老师();29. y.讲课(); /Java30. y.钓鱼(); /钓鱼31.32. 毕老师 z = (毕老师)y;33. z.看电影(); /看电影34. 35.36.复制代码运行结果:P.S.instanceof :用于判断对象的具体类型,只能用于引用数据类型判断,通常在向下转型前用于健壮性的判断。示例 4:1.class DuoTaiDemo2. public static void main(String args)3. 4.5. public static void method(Animal a)6. a.eat();7. 8. if(a instanceof Cat) 9. Cat c = (Cat )a;10. c.catchMouse();11. 12. else if (a instanceof Dog)13. Dog d = (Dog )a;14. d.lookHome();15. 16. 17.18.复制代码
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号