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()”置于调用父类构造器的方法内部的顶端,因为必须首先初始化继承自父类的成员。