第03章 面向对象 39 多态1
来源:互联网 发布:c语言的架构 编辑:程序博客网 时间:2024/05/16 12:32
鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.9.6改)
动态绑定和多态
1 动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法
2 上面例子中,根据Lady对象的成员变量pet所引用的不同的实际类型而调用相应的enjoy方法
3 必要条件
1 要有继承
2 要有重写
3 父类引用指向子类对象
//TestPolymoph.javaclass Animal {private String name;Animal(String name) {this.name = name;}public void enjoy() {System.out.println("叫声........");}}class Cat extends Animal {public String eyesColor;Cat(String n, String c) {super(n);this.eyesColor = c;}public void enjoy() {System.out.println("猫叫声........");}}class Dog extends Animal {public String furColor;Dog(String n, String c) {super(n);this.furColor = c;}public void enjoy() {System.out.println("狗叫声........");}}class Bird extends Animal{Bird() {super("bird");}public void enjoy() {System.out.println("鸟叫声.......");}}class Lady {private String name;private Animal pet;Lady(String name, Animal pet) {this.name = name;this.pet = pet;}public void myPetEnjoy() {pet.enjoy();}}public class Test {public static void main(String args[]) {Cat c = new Cat("catname", "blue");Dog d = new Dog("dogname", "black");Bird b = new Bird();Lady l1 = new Lady("11", c);Lady l2 = new Lady("12", d);Lady l3 = new Lady("13", b);l1.myPetEnjoy(); l2.myPetEnjoy();l3.myPetEnjoy();}}
部分内存分析
- 第03章 面向对象 39 多态1
- 第03章 面向对象 37 对象转型1
- 第03章 面向对象 40 多态2
- 第03章 面向对象 43 interface1
- 第03章 面向对象 44 interface2
- 第03章 面向对象 45总结
- 第1章 面向对象泛型
- 第1章 面向对象方法概论
- 第03章 面向对象 38 对象转型2
- 第2章 面向对象
- 第10章 面向对象
- 第03章 面向对象 35 hashcode解释
- 第03章 面向对象 41抽象类
- 第03章 面向对象 42final关键字
- 《设计模式解析》第1章 面向对象范型
- 《设计模式解析》第1章 面向对象范型
- 第5章 面向对象编程进阶(1)
- 第二章 第1节 java面向对象之封装
- Web前端开发人员和设计师必读文章推荐(转载)
- Server Java 四 :如何在用JSF在服务器端处理Ajax请求
- 删除及重建oracle EM
- 第03章 面向对象 38 对象转型2
- 2015年之前需要阅读完的非技术书单
- 第03章 面向对象 39 多态1
- HttpSessionListener用法
- HDU Boring counting 树状数组
- 局部变量、全局变量、堆、堆栈、静态和全局
- 学习MongoDB--(6-1):聚合(初级聚合函数使用)
- 学习MongoDB--(6-2):聚合(MapReduce使用)
- 边双连通分量
- 转载:面试技巧70招
- POJ1664