繼承介面的理解以及實現
public class Test {
public static void main(String[] args) {
Worker w=new Worker();
w.CleanDoors();
w.CleanWindows();
}
}
定義:子類繼承父類的屬性和方法(構造方法不能繼承)
格式:public class 子類類名 extends 父類類名{}
注意:任何一個類都是Object類的子類
繼承只能是單繼承,不能是多繼承,但是可以多層繼承
方法重寫格式:子類重寫父類的方法,方法名、引數列表、返回型別必須都要一樣的
自動轉型格式:子類物件自動轉型為父類的型別
父類型別 物件名= new 子類型別();
注意:自動轉型後的物件,如果子類重寫了父類的方法,則執行的是重寫後的
多型:多個同一個型別的物件,執行同一個方法,過程不一樣就是多型性
程式碼思想:我準備建立4個類,一個父類,二個子類,其中一個子類對父類的方法進行了重寫,一個測試類,測試類中使用了自動轉型格式,由於一個子類重寫了方法,導致雖然執行同一個方法,但過程不一樣,體現出多型性。父類:package Example03;
public class Father {
public void play(){
System.out.println("小明最喜歡踢足球");
}
}
子類1:package Example03;
public class Child extends Father{
}
重寫了方法的子類2:
package Example03;
public class Son extends Father{
public void play(){
System.out.println("小明最喜歡打籃球");
}
}
測試類package Example03;
public class Test {
public static void main(String[] args) {
Father a=new Child();
Father b=new Son();
a.play();
b.play();
}
}
輸出結果:
小明最喜歡踢足球
小明最喜歡打籃球
4.方法分類,介面與繼承
方法分類:構造方法:public 類名(){}
普通方法:public 返回型別 方法名(){}
抽象方法:public abstract 返回型別 方法名();
普通類:public class 類名{}
1. 方法只能有普通方法和構造方法,一定不能有抽象方法
2. 可以構造物件
抽象類:public abstract class 類名{}
1. 三種方法都可以存在
2. 不能建立物件
介面:public interface 類名{}
1.只能有抽象方法(可以省略掉中間的abstract修飾詞)
2.不能建立物件
抽象類和介面作用:用於當父類,被繼承,約束普通類的成員定義
繼承介面:public class 子類類名 implements 介面名{}
注意:介面可以多繼承
因為介面抽象類可以用作約束,這次我準備做三個類,一個介面類Boss,它約束了2個方法CleanWindows()和public abstract void CleanDoors();子類Worker類中繼承了方法,並在測試類中建立了物件。 Boss類 package Example04;public interface Boss {
public abstract void CleanWindows();
public abstract void CleanDoors();
} 子類Worker類 package Example04;
public class Worker implements Boss{
public void CleanWindows() {
// TODO Auto-generated method stub
System.out.println("員工打掃了地");
}
public void CleanDoors() {
// TODO Auto-generated method stub
System.out.println("員工擦了門");
}
}
測試類 package Example04;
public class Test {
public static void main(String[] args) {
Worker w=new Worker();
w.CleanDoors();
w.CleanWindows();
}
}
輸出結果 員工擦了門
員工打掃了地