關於繼承說明
定義兩個類 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 }
