1. 程式人生 > >繼承介面的理解以及實現

繼承介面的理解以及實現

package Example04;


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();


}


}
輸出結果 員工擦了門
員工打掃了地