Java-抽象類與接口

1:抽象類關(guān)鍵字 abstract , 修飾類和方法, 可以放在權(quán)限訪問符的前面或后面 ,一般放在后面

2:抽象類中未必有抽象的方法,但是有抽象方法的一定是抽象類

3:抽象方法的個數(shù)沒有限制,可以有也可以沒有普通的方法

案例:

package edu.xcdq.Demo02.Demo01;


public abstract class Door  {
    public abstract void open();
   public abstract void close();
}

子類一:

package edu.xcdq.Demo02.Demo01;


public class keypadDoor  extends Door {
    @Override
    public void open(){
        System.out.println("輸入密碼開門");
    }
    @Override
    public void close(){
        System.out.println("輕輕關(guān)上");
    }
}

子類二:

package edu.xcdq.Demo02.Demo01;

public class Main  extends Door {
    @Override
    public  void open(){
        System.out.println("按遙控開門");
    }
    @Override
    public  void  close(){
        System.out.println("按遙控管么");
    }


}

測試:

package edu.xcdq.Demo02.Demo01;


public class Demo01 {
    public static void main(String[] args) {
       keypadDoor keypadDoor = new keypadDoor();
        keypadDoor.open();

        keypadDoor.close();
        Main main = new Main();
        main.close();
        main.open();

    }
}

匿名類:

package edu.xcdq.Demo02.Demo01;


public class Demo01 {
    public static void main(String[] args) {
        keypadDoor keypadDoor = new keypadDoor();
        keypadDoor.open();

        keypadDoor.close();
        Main main = new Main();
        main.close();
        main.open();
      Door door =   new Door() {
            @Override
            public Door open() {
                System.out.println("臨時實現(xiàn)的開門");
                return null;
            }

            @Override
            public void close() {
                System.out.println("臨時實現(xiàn)的關(guān)門");

            }


        }.open();
    }
}

接口

1:關(guān)鍵字 interface ,實現(xiàn)類的關(guān)鍵字 implements

2:接口中定義方法的聲明,沒有方法的方法體

3:接口中的方法必須是公有的

//接口 ,定義門的規(guī)范
public interface Door {
    public void open();
    public  void close();
}
package edu.xcdq.Demo03;


public class PowerDoor implements Door {
    @Override
    public void open() {

    }

    @Override
    public void close() {

    }

}
package edu.xcdq.Demo03;


public class KeypadDoor implements Door{

    @Override
    public void open() {

    }

    @Override
    public void close() {

    }
}

調(diào)用:

package edu.xcdq.Demo03;


public class Demo03 {
    public static void main(String[] args) {
        KeypadDoor keypadDoor =new KeypadDoor();
        keypadDoor.close();
        keypadDoor.open();

        // 可以用接口的類型 接受實現(xiàn)創(chuàng)建的對象
        Door powerDoor = new PowerDoor();
        powerDoor.open();
        powerDoor.close();
    }
}

接口中的靜態(tài)常量

由于接口是規(guī)范 實現(xiàn)類必須包含其中的屬性 因此 屬性默認(rèn)是公有的 public static finial 原本的屬性 就變成了靜態(tài)的常量

package edu.xcdq.Demo03;


//接口 ,定義門的規(guī)范
public interface Door {
    //接口的靜態(tài)常量
     String   desc = "是個門,注意安全";
    public void open();
    public  void close();
}

接口中的個連個特例:

默認(rèn)方法,只能通過實現(xiàn)類的對象調(diào)用    keypadDoor.test01();

靜態(tài)方法,只能通過接口名的方式調(diào)用                      Door.test02();
package edu.xcdq.Demo03;


public class Demo03 {
    public static void main(String[] args) {
        KeypadDoor keypadDoor =new KeypadDoor();
        keypadDoor.close();
        keypadDoor.open();
        
        keypadDoor.test01();
//        Door.test01();
//        keypadDoor.test02();
        Door.test02();
        // 可以用接口的類型 接受實現(xiàn)創(chuàng)建的對象
        Door powerDoor = new PowerDoor();
        powerDoor.open();
        powerDoor.close();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容