9.3.3 替代父类和本身的方式
上述代码中有一个“super()”函数,本节将详细介绍此函数的意义。“super”代表父类,而“super()”则代表父类的构造器,可以使用“super”代替父类中的属性或方法。提到用“super”来代替父类,则会想到如何使用相似的方法来代替类本身呢?
在Java中,使用“this”来代替引用对象自身,同样“this()”用来代替对象的构造器。
【实例9.3】下面的例子可以验证这种理论。
01 class Person
02 {
03 int a;
04 Person()
05 {
06 a=1;
07 }
08 Person(int a)
09 {
10 this.a=a;
11 }
12 }
13 public class men1 extends Person
14 {
15 int b;
16 men1(int a, int b)
17 {
18 super(a);
19 this.b=b;
20 }
21 public static void main(String[]args)
22 {
23 men1 m=new men1(10,20);
24 System.out.println(m.a+""+m.b);
25 }
26 }
【代码说明】
(1)当创建“men1”类的对象“m”时,先调用父类带参数的构造器,“Person(int a){}”将变量“a”值传给父类的属性字段“a”。
(2)调用子类的带两个参数的构造器,在子类构造器中,将两个参数中的一个参数传给父类构造器,于是“a”的值就是子类对象中那个要传给父类的值,即“men1 m=new men1(10,20)”中的参数10。
【运行效果】
10 20
通过以上的例子,应该能很清楚地知道“this”和“super”的特殊用法,在定义构造器时,应将调用父类构造器的代码“super()”置于调用父类构造器的方法内部的顶端,因为必须首先初始化继承自父类的成员。