JAVA中繼承的應用、擴展和方法的重寫【基礎】


關於繼承說明

  定義兩個類 Door 和 MyDoor ,如果其中MyDoor繼承了 Door類,那么 MyDoor 就是子類, Door就是父類,子類繼承了父類的所有方法和屬性。子類可以對直接設置父類的屬性和調用方法,也可以對父類的方法進行重寫或擴展。但是,重寫的方法在子類被實例化后,調用此方法時,輸出的內容是子類的實現內容。如果要調用父類中被重寫的方法,可以使用關鍵字:super進行調用

1、繼承

父類:Door

Door類
 1 /**
 2  * Door類
 3  */
 4 package com.smile;
 5 
 6 public class Door {
 7     private  int height;
 8 
 9     public  int getHeight() {
10         return height;
11     }
12     public  void setHeight(int height) {
13         this.height = height;
14     }
15 
16     public void opendoor(String doorName)
17     {
18         //
19         System.out.println(doorName+" ,"+this.getHeight() +"m , is open");
20             
21     }
22 }

子類:MyDoor

MyDoor類
 1 /**
 2  * 定義我的門,使其繼承Door類
 3  * 1、繼承使用關鍵字:extends
 4  */
 5 package com.smile;
 6 
 7 public class MyDoor extends Door {
 8 
 9     String doorName="";
10     public MyDoor(String doorName,int height)
11     {    
12         this.setHeight(height);//這步不可少,順序不可亂,否者測試的時候,door的高度就為0
13         
14         //繼承了父類的opendoor方法
15         this.opendoor(doorName);
16         this.doorName=doorName;
17         
18     }
19     
20 }

測試類

測試類
 1 package com.smile;
 2 
 3 public class Studyobject {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         System.out.println("Hello MyJava!");
11         
12         
13         //繼承測試代碼調用
14         MyDoor myDoor =new MyDoor("MyDoor",123);
15         //調用方法        
16         myDoor.opendoor(myDoor.doorName);
17             
18         
19         
20     }
21 
22 }

 

2、繼承的重寫

重寫就是在父類的屬性、方法不適用的的情況下,對父類中的某些方法進行重新實現。被重寫后,應用中使用實例化類調用該方法輸出的是子類的實現內容,只有在使用關鍵字super進行調用輸出的才是父類的實現內容。


這里父類不變,修改子類如下

子類代碼:(重寫后)

重寫后的子類
 1 /**
 2  * 定義我的門,使其繼承Door類
 3  * 1、繼承使用關鍵字:extends
 4  * 2、可以進行父類方法重寫、擴展
 5  */
 6 package com.smile;
 7 
 8 public class MyDoor extends Door {
 9 
10     String doorName="";
11     public MyDoor(String doorName,int height)
12     {    
13         this.setHeight(height);//這步不可少,順序不可亂,否者測試的時候,door的高度就為0
14         //在重寫情況下,使用super調用父類方法
15          System.out.println("在被重寫的情況下,只有使用關鍵字super進行調用輸出的才是父類的實現內容");
16         super.opendoor(doorName);
17 
18         //繼承了父類的opendoor方法
19         System.out.println("在被重寫的情況下,調用的是子類的方法,實現的是子類的實現內容");
20         this.opendoor(doorName);
21         this.doorName=doorName;
22         
23     }
24     
25     //重寫了父類opendoor方法
26 
27     public void opendoor(String doorName)
28     {
29         System.out.println(doorName+" is a automatic door");
30     }
31     
32     
33 }

測試類

測試類
 1 package com.smile;
 2 
 3 public class Studyobject {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         System.out.println("Hello MyJava!");
11         
12         //繼承測試代碼調用
13         MyDoor myDoor =new MyDoor("MyDoor",123);
14         //調用方法    
15         System.out.println("在未被重寫的情況下,調用的是父類的方法,實現的是父類的實現內容");    
16         myDoor.opendoor(myDoor.doorName);
17             
18         
19         
20     }
21 
22 }
23             

 

3、繼承的擴展

擴展就是在父類的屬性、方法不夠的的情況下,子類中對父類中的方法或屬性進行補充。

這里父類不變,修改子類如下

子類(擴展后)

擴展后的子類
/**
 * 定義我的門,使其繼承Door類
 * 1、繼承使用關鍵字:extends
 * 2、可以進行父類方法重寫、擴展
 */
package com.smile;

public class MyDoor extends Door {

    String doorName="";
    public MyDoor(String doorName,int height)
    {    
        this.setHeight(height);//這步不可少,順序不可亂,否者測試的時候,door的高度就為0
        //在重寫情況下,使用super調用父類方法
         System.out.println("在被重寫的情況下,只有使用關鍵字super進行調用輸出的才是父類的實現內容");
        super.opendoor(doorName);
        
        //繼承了父類的opendoor方法
        System.out.println("在被重寫的情況下,調用的是子類的方法,實現的是子類的實現內容");
        this.opendoor(doorName);
        this.doorName=doorName;
        
    }
    
    //重寫了父類opendoor方法
    
    public void opendoor(String doorName)
    {
        System.out.println(doorName+" is a automatic door");
    }
    
    //擴展
    public void Close()
    {
        System.out.println("MyDoor is close.");        
    }
    
}

測試類

測試類
 1 package com.smile;
 2 
 3 public class Studyobject {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         System.out.println("Hello MyJava!");
11                 
12         
13         //繼承測試代碼調用
14         MyDoor myDoor =new MyDoor("MyDoor",123);
15         //調用方法        
16         myDoor.opendoor(myDoor.doorName);
17         //擴展方法調用
18         myDoor.Close();        
19         
20         
21     }
22 
23 }

 

 

 


免責聲明!

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



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