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