Java基础_学习笔记_13_类的多态性(二)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基础_学习笔记_13_类的多态性(二),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1819字,纯文字阅读大概需要3分钟。
内容图文
1 class Animal 2 { 3 private String name; 4 Animal(String name) 5 { 6 this.name=name; 7 } 8publicvoid enjoy() 9 { 10 System.out.println("叫声。。。"); 11 } 12} 13class Cat extends Animal 14{ 15private String eyeColor; 16 Cat(String n,String eyeColor) 17 { 18super(n); 19this.eyeColor=eyeColor; 20 } 21publicvoid enjoy() 22 { 23 System.out.println("猫叫声。。。"); 24 } 25} 26class Dog extends Animal 27{ 28private String furColor; 29 Dog(String n,String furColor) 30 { 31super(n); 32this.furColor=furColor; 33 } 34publicvoid enjoy() 35 { 36 System.out.println("狗叫声。。。"); 37 } 38} 39/*40class Bird extends Animal 41{ 42 Bird() 43 { 44 super("bird"); 45 } 46 public void enjoy() 47 { 48 System.out.println("鸟叫声。。。"); 49 } 50}*/51class Lady 52{ 53private String name; 54private Animal Pet; 55 Lady(String name,Animal Pet) 56 { 57this.name=name; 58this.Pet=Pet; 59 } 60publicvoid petEnjoy() 61 { 62 Pet.enjoy(); 63 } 64} 65class Test 66{ 67publicstaticvoid main(String [] args) 68 { 69 Cat c=new Cat("catname","blue"); 70 Dog d=new Dog("dogname","black"); 71//Bird b=new Bird();72 Lady L1=new Lady("L1",c); 73 Lady L2=new Lady("L2",d); 74//Lady L3=new Lady("L3",b);75 L1.petEnjoy(); 76 L2.petEnjoy(); 77//L3.petEnjoy();78 } 79} 80/*81F:\java_example\lesson6>java Test 82猫叫声。。。 83狗叫声。。。 84*/
类的多态性,也叫动态绑定。它是指代码在执行期间(也就是编译之后,进行运行操作)判断所引用对象的实际类型,根据其实际的类型调用相应的方法。
对应上述代码我们可以看到,L1对应的c是Cat的对象,而Lady中c是Animal的引用句柄,如果根据引用类型那就要调用Animal的enjoy(),若按照实际类型,应该调用Cat的enjoy(),动态绑定这种机制就是指实际当中用的是什么类型就调用谁的enjoy()方法,实际中new的是Cat,所以调用Cat的enjoy()。之前是有一个指针指向了Animal的enjoy(),但一旦运行起来,指针就指向了Cat的enjoy()方法。所以只有在运行期间,new了之后,我才知道到底是调用哪个方法,这就是动态绑定的机制。简言之,方法被重写了,实际当中new的是谁,就调用谁的方法。
多态的特点:
可扩展性(就像上述代码中写到一样,如果我现在要加上鸟叫,那我只需要增加类,将代码中的注释去掉,不用过多修改程序)
多态的实现三个必备条件:继承;重写方法;父类引用指向子类对象
原文:http://www.cnblogs.com/tiantianxiangshang33/p/4953724.html
内容总结
以上是互联网集市为您收集整理的Java基础_学习笔记_13_类的多态性(二)全部内容,希望文章能够帮你解决Java基础_学习笔记_13_类的多态性(二)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。