### 抽象類:
父類中至少有一個抽象方法
1.**抽象方法**需要有abstract關(guān)鍵字修飾研底,關(guān)鍵字可以在public關(guān)鍵字后面渠脉,也可以在public前面
2.**抽象類**需要有abstract關(guān)鍵字修飾,關(guān)鍵字可以在public關(guān)鍵字后面,也可以在public前面
3.一個**抽象類**中至少要有一個**抽象方法**
4.**抽象方法**只需要聲明方法蚊丐,不能有方法體
父類抽象類:
```java
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("拉上即可關(guān)門");
}
}
子類二 電動門:
public class PowerDoor extends Door {
public void open(){
System.out.println("按遙控器開門");
}
public void close(){
System.out.println("按遙控器關(guān)門");
}
}
測試并調(diào)用
public class Demo01 {
public static void main(String[] args) {
KeypadDoor keypadDoor = new KeypadDoor();
keypadDoor.open();
keypadDoor.close();
PowerDoor powerDoor = new PowerDoor();
powerDoor.open();
powerDoor.close();
}
}
匿名類
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();
}
接口
1.關(guān)鍵字interface丧慈,實現(xiàn)類的關(guān)鍵字 implements接口的名字
2.接口中寫方法的聲明,沒有方法體
3.接口方法默認(rèn)權(quán)限全部是public兴泥,因此工育,可省略
4.實現(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 = "是個門搓彻,注意安全";
}
接口中的默認(rèn)方法和靜態(tài)方法
public interface Door {
String des = "是個門如绸,注意安全";
//方法的聲明 (簽名)
public void open();
public void close();
public default void test01(){
System.out.println("接口中的默認(rèn)測試方法");
}
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();
}
接口中默認(rèn)方法只能通過實現(xiàn)類的對象keypadDoor.test01();調(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)