Java類的繼承與方法調用的一個小問題

 1 public class Father {
 2 
 3     protected void server(int i){
 4         switch (i){
 5             case 1:
 6                 methodone();
 7                 break;
 8             case 2:
 9                 methodtwo();
10                 break;
11             case 3:
12                 methodthree();
13                 break;
14             default:
15                 System.out.println("error");
16         }
17 
18 
19 
20     }
21 
22     protected void methodthree() {
23         System.out.println("這是父類的方法三");
24     }
25 
26     protected void methodtwo() {
27         System.out.println("這是父類的方法二");
28     }
29 
30     protected void methodone() {
31         System.out.println("這是父類的方法一");
32     }
33 }
 1 public class Child extends Father {
 2 
 3     @Override
 4     protected void methodthree() {
 5         System.out.println("這是子類的方法三");
 6     }
 7 
 8     @Override
 9     protected void methodtwo() {
10         System.out.println("這是子類的方法二");
11     }
12 
13     @Override
14     protected void methodone() {
15         System.out.println("這是子類的方法一");
16     }
17 
18     @Override
19     protected void server(int i) {
20         super.server(i);
21     }
22 }
1 public class Test_main {
2     public static void main(String[] args){
3         Father fa=new Father();
4         Father ch=new Child();
5         fa.server(1);
6         ch.server(2);
7 
8     }
9 }

  在學習servlet的過程當中忽然對類方法的調用關係犯了糊塗,所謂基礎不牢,地動山搖,一個小問題足以搞得我模模糊糊。在類的繼承中,子類繼承父類的某個方法,若這個方法中含有對父類的另外一個方法(如method1,method2,method3)的調用,當子類不重載此方法(如method1,method2,method3)時,編譯器會自動調用父類的相應的方法;當子類重載此方法(如method1,method2,method3)時,編譯器會自動調用子類重載的方法。ide

  換句話說,子類繼承父類方法時只是繼承了相應的代碼,父類調用子類的實例時會接着調用子類重載的方法,方法沒有被子類重載時纔會調用父類原本的方法。學習

相關文章
相關標籤/搜索