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)時,編譯器會自動調用子類重載的方法。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM