抽象類:
父類中至少有一個抽象方法
- 抽象方法需要有 abstract 關(guān)鍵字修飾,關(guān)鍵字可以在public關(guān)鍵字后面调缨,也可以在public的前面
- 抽象類也需要abstract關(guān)鍵字修飾织咧,關(guān)鍵字可以在public關(guān)鍵字后面癞尚,也可以在public的前面
- 一個抽象類中至少要有一個抽象方法
- 抽象方法 只需要聲明方法牌捷,不能有方法體
父類抽象類:
public abstract class Door {
/* public void open(){
System.out.println("門的作用之一是開門");
}
public void close(){
System.out.println("門的作用之二是關(guān)門");
}*/
public abstract void open();
public abstract void close();
}
子類一 鍵盤鎖門:
public class KeypadDoor extends Door{
public void open(){
System.out.println("按鍵盤輸入密碼開門");
}
public void close(){
System.out.println("拉上即可鎖門");
}
}
子類二 電動門:
public class PowerDoor extends Door{
public void open(){
System.out.println("按遙控器開門");
}
public void close(){
System.out.println("按遙控器關(guān)門");
}
}
測試并調(diào)用
匿名類:
Door door = new Door(){
@Override
public void open(){
System.out.println("臨時實現(xiàn)開們法");
}
@Override
public void close(){
System.out.println("臨時實現(xiàn)關(guān)門法");
}
};
door.open();
door.close();
}
}
接口
- 關(guān)鍵字interface凌摄,實現(xiàn)類的關(guān)鍵字 implements接口的名字
- 接口種寫法的聲明尿孔,沒有方法體
- 接口方法默認權(quán)限全部是public滞项,因此狈惫,public可省略
- 實現(xiàn)類中需要全部實現(xiàn)接口中出現(xiàn)的未實現(xiàn)的方法
案列:
public interface Door {
//方法的聲明(簽名)
public void open();
public void close();
}
實現(xiàn)類:
public class KeypadDoor implements Door{
@Override
public void open() {
System.out.println("鍵盤門打開");
}
@Override
public void close() {
System.out.println("鍵盤門關(guān)閉");
}
}
實現(xiàn)類:
public class PowerDoor implements Door{
@Override
public void open() {
System.out.println("電動門開門");
}
@Override
public void close() {
System.out.println("電動門關(guān)門");
}
}
接口沒有直接new睛蛛,創(chuàng)建對象,但是可以臨時創(chuàng)建一個匿名實現(xiàn)類
Door door = new Door() {
@Override
public void open() {
System.out.println("臨時的實現(xiàn)類開門");
}
@Override
public void close() {
System.out.println("臨時的實現(xiàn)類關(guān)門");
}
};
door.open();
door.close();
}
接口中的靜態(tài)常量
public interface Door {
//靜態(tài)常量
String des = "是個門胧谈,注意安全";
}
接口中的默認方法和靜態(tài)方法
public interface Door {
String des = "是個門忆肾,注意安全";
//方法的聲明(簽名)
public void open();
public void close();
public default void test01(){
System.out.println("接口中的默認測試方法");
}
public static void test02(){
System.out.println("接口中的靜態(tài)方法");
}
}
public class Demo02{
public static void main(String[] args){
keypadDoor.test01();
//keypadDoor.test02();
//Door.test01():
Door.test02();
}
}
接口中默認的方法只能通過實現(xiàn)類的對象ketpadDoor.test();調(diào)用
接口中的靜態(tài)方法只能通過接口方法Door.test02();調(diào)用
接口可以多繼承
演示:
public interface GrandFather {
public void diaoyu();
}
public interface Father {
public void chouyan();
}
public interface Son {
public void play();
}
多繼承:一個接口可以同時繼承很多個接口
public interface Temp extends GrandFather ,Father ,Son{
}
子類必須實現(xiàn)抽象的父類中或抽象的祖類中積累的未實現(xiàn)的抽象方法
祖先類中的抽象的方法,如果在抽象的父類中實現(xiàn)過菱肖,子類可以選擇實現(xiàn)客冈,也可以選擇不實現(xiàn)