廢話少說,直接上代碼測試:
例:
SuperClass
1
package com.inheritance;
2
3
public class SuperClass {
4
public SuperClass(String n,int a){
5
name = n;
6
salary =a;
7
}
8
private String name;
9
private int salary;
10
public String getName(){
11
return name;
12
}
13
public int getSalary(){
14
return salary;
15
}
16
17
}
18

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

ChildClass
1
package com.inheritance;
2
3
public class ChildClass extends SuperClass{
4
public ChildClass(String n,int a,int b){
5
super(n,a);
6
bonus = b;
7
}
8
private int bonus ;
9
public int getSum(){
10
return bonus +super.getSalary();
11
}
12
public String getName(){
13
return super.getName();
14
}
15
}
16

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

TestClass
1
package com.inheritance;
2
3
public class SuperTest {
4
public static void main(String[] args){
5
ChildClass c = new ChildClass("b",20,30);
6
System.out.println(c.getSum());
7
System.out.println(c.getName());
8
}
9
}
10

2

3

4

5

6

7

8

9

10

運行測試類,結(jié)果打印子類對象c的name和薪水。
注意:我們的子類ChildClass中的構(gòu)造方法,它是調(diào)用了父類SuperClass的含有n,a參數(shù)的構(gòu)造方法。因為子類ChildClass不能直接訪問父類SuperClass的私有值域,可以通過這個super方法對這部分值域初始化。這樣父類的值域就被初始化,如name和salary。這樣,我們可以看到TestCalss中的第七行輸出的c.getName實際上是得到父類SuperClass的name,因為在產(chǎn)生c對象的時候,"b"參數(shù)實際上是傳遞給了父類的私有域name,super隱式調(diào)用了SuperClass。這樣在TestClass中取c.getName()返回的是super.getName().返回的當然是父類的name。
另外,構(gòu)造方法不同于一般的方法。它不能由子類繼承。