java基础学习总结——多态(动态绑定)
一、面向对象最核心的机制——动态绑定,也叫多态
1.1.通过下面的例子理解动态绑定,即多态
1 package javastudy.summary;
2
3 class Animal {
4 /**
5 * 声明一个私有的成员变量name。
6 */
7 private String name;
8
9 /**
10 * 在Animal类自定义的构造方法
11 * @param name
12 */
13 Animal(String name) {
14 this.name = name;
15 }
16
17 /**
18 * 在Animal类里面自定义一个方法enjoy
19 */
20 public void enjoy() {
21 System.out.println("动物的叫声……");
22 }
23 }
24
25 /**
26 * 子类Cat从父类Animal继承下来,Cat类拥有了Animal类所有的属性和方法。
27 * @author gacl
28 *
29 */
30 class Cat extends Animal {
31 /**
32 * 在子类Cat里面定义自己的私有成员变量
33 */
34 private String eyesColor;
35
36 /**
37 * 在子类Cat里面定义Cat类的构造方法
38 * @param n
39 * @param c
40 */
41 Cat(String n, String c) {
42 /**
43 * 在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name)。
44 * 把子类对象里面的父类对象先造出来。
45 */
46 super(n);
47 eyesColor = c;
48 }
49
50 /**
51 * 子类Cat对从父类Animal继承下来的enjoy方法不满意,在这里重写了enjoy方法。
52 */
53 public void enjoy() {
54 System.out.println("我养的猫高兴地叫了一声……");
55 }
56 }
57
58 /**
59 * 子类Dog从父类Animal继承下来,Dog类拥有了Animal类所有的属性和方法。
60 * @author gacl
61 *
62 */
63 class Dog extends Animal {
64 /**
65 * 在子类Dog里面定义自己的私有成员变量
66 */
67 private String furColor;
68
69 /**
70 * 在子类Dog里面定义Dog类的构造方法
71 * @param n
72 * @param c
73 */
74 Dog(String n, String c) {
75 /**
76 * 在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name)。
77 * 把子类对象里面的父类对象先造出来。
78 */
79 super(n);
80 furColor = c;
81 }
82
83 /**
84 * 子类Dog对从父类Animal继承下来的enjoy方法不满意,在这里重写了enjoy方法。
85 */
86 public void enjoy() {
87 System.out.println("我养的狗高兴地叫了一声……");
88 }
89 }
90
91 /**
92 * 子类Bird从父类Animal继承下来,Bird类拥有Animal类所有的属性和方法
93 * @author gacl
94 *
95 */
96 class Bird extends Animal {
97 /**
98 * 在子类Bird里面定义Bird类的构造方法
99 */
100 Bird() {
101 /**
102 * 在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name)。
103 * 把子类对象里面的父类对象先造出来。
104 */
105 super("bird");
106 }
107
108 /**
109

