筆記
抽象abstract
1抽象類關(guān)鍵字墅拭,修飾類和方法可以放在訪問權(quán)限符public的前面或后面,一般放在后面
2抽象方法的個(gè)數(shù)沒有限制掀序,可以有也可以沒有普通的方法
3抽象類必有抽象的方法爹脾,反抽象方法的一定的是抽象類
案例:
package Demo02;
public abstract class Door {
public abstract void open();
public abstract void close();
}
子類一
package edu.xcdq.Demo01;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:44
*/
public class KeypadDoor extends Door{
public void open(){
System.out.println("輸入密碼開門");
}
public void close(){
System.out.println("輕輕關(guān)上");
}
}
子類二
package edu.xcdq.Demo01;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:45
*/
public class PowerDoor extends Door{
public void open(){
System.out.println("遙控開門");
}
public void close(){
System.out.println("遙控關(guān)門");
}
}
測試
package edu.xcdq.Demo01;
import Demo02.Door;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:45
*/
public class Demo01 {
public static void main(String[] args) {
KeypadDoor keypadDoor = new KeypadDoor();
keypadDoor.open();
keypadDoor.close();
PowerDoor powerDoor = new PowerDoor();
powerDoor.close();
powerDoor.open();
Demo02.Door door = new Door() {
@Override
public void open() {
System.out.println("臨時(shí)實(shí)現(xiàn)開門");
}
@Override
public void close() {
System.out.println("臨時(shí)實(shí)現(xiàn)關(guān)門");
}
};
door.open();
door.close();
}
}
接口
1關(guān)鍵字interface,實(shí)現(xiàn)類的關(guān)鍵字implements
2接口中定義方法的聲明坡疼,沒有方法的方法體
3接口中的方法必須是公有的
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:31
*/
public interface Door {
public void open();
public void close();
}
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:33
*/
public class KeypadDoor implements Door{
@Override
public void close() {
System.out.println("鍵盤開門");
}
@Override
public void open() {
System.out.println("鍵盤關(guān)門");
}
}
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:32
*/
public class PowerDoor implements Door{
@Override
public void open() {
System.out.println("開門");
}
@Override
public void close() {
System.out.println("關(guān)門");
}
}
調(diào)用
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:43
*/
public class Demo03 {
public static void main(String[] args) {
KeypadDoor keypadDoor = new KeypadDoor();
keypadDoor.open();
keypadDoor.close();
//可以用接口的類型 接受實(shí)現(xiàn)類創(chuàng)建的對象
Door powerDoor = new PowerDoor();
powerDoor.open();
powerDoor.close();
}
}
接口中的靜態(tài)常量
由于接口是規(guī)范的彬呻,實(shí)現(xiàn)類必須包含其中的屬性和方法,因此屬性public static final原本的屬性變成了靜態(tài)常量
public interface Door {
//接口的靜態(tài)常量
String desc = "是個(gè)門注意安全";
// public static final String desc = "是個(gè)門注意安全";
public void open();
public void close();
}
接口的兩個(gè)例外
默認(rèn)方法柄瑰,只能通過實(shí)現(xiàn)類的對象調(diào)用keypadDoor.test01();
靜態(tài)方法闸氮,只能通過接口名的方式調(diào)用Door.test02();
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:31
*/
//接口, 定義門的規(guī)范
public interface Door {
//接口的靜態(tài)常量
String desc = "是個(gè)門注意安全";
// public static final String desc = "是個(gè)門注意安全";
public void open();
public void close();
public default void test01(){
System.out.println("接口中的靜態(tài)方法");
}
public static void test02(){
System.out.println("接口中的靜態(tài)方法");
}
}
keypadDoor.test01();
Door.test02();
總代碼
Demo01
package edu.xcdq.Demo01;
import Demo02.Door;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:45
*/
public class Demo01 {
public static void main(String[] args) {
KeypadDoor keypadDoor = new KeypadDoor();
keypadDoor.open();
keypadDoor.close();
PowerDoor powerDoor = new PowerDoor();
powerDoor.close();
powerDoor.open();
Demo02.Door door = new Door() {
@Override
public void open() {
System.out.println("臨時(shí)實(shí)現(xiàn)開門");
}
@Override
public void close() {
System.out.println("臨時(shí)實(shí)現(xiàn)關(guān)門");
}
};
door.open();
door.close();
}
}
Door
package edu.xcdq.Demo01;
public class Door {
public void Door(){
System.out.println("開門");
}
public void close(){
System.out.println("關(guān)門");
}
}
KeypadDoor
package edu.xcdq.Demo01;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:44
*/
public class KeypadDoor extends Door{
public void open(){
System.out.println("輸入密碼開門");
}
public void close(){
System.out.println("輕輕關(guān)上");
}
}
PowerDoor
package edu.xcdq.Demo01;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:45
*/
public class PowerDoor extends Door{
public void open(){
System.out.println("遙控開門");
}
public void close(){
System.out.println("遙控關(guān)門");
}
}
Demo02.Demo.1
package Demo02;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:45
*/
public class Demo01 {
public static void main(String[] args) {
KeypadDoor keypadDoor = new KeypadDoor();
keypadDoor.open();
keypadDoor.close();
PowerDoor powerDoor = new PowerDoor();
powerDoor.close();
powerDoor.open();
}
}
Door
package Demo02;
public abstract class Door {
public abstract void open();
public abstract void close();
public void test(){
System.out.println("可以有普通的方法");
}
}
KeypadDoor
package Demo02;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:44
*/
public class KeypadDoor extends Door {
public void open(){
System.out.println("");
}
public void close(){
System.out.println("");
}
}
PowerDoor
package Demo02;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 16:45
*/
public class PowerDoor extends Door {
public void open(){
System.out.println("");
}
public void close(){
System.out.println("");
}
}
Demo03.Demo01接口
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:43
*/
public class Demo01 {
public static void main(String[] args) {
KeypadDoor keypadDoor = new KeypadDoor();
keypadDoor.open();
keypadDoor.close();
//可以用接口的類型 接受實(shí)現(xiàn)類創(chuàng)建的對象
Door powerDoor = new PowerDoor();
powerDoor.open();
powerDoor.close();
keypadDoor.test01();
Door.test02();
}
}
Door
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:31
*/
//接口教沾, 定義門的規(guī)范
public interface Door {
//接口的靜態(tài)常量
String desc = "是個(gè)門注意安全";
// public static final String desc = "是個(gè)門注意安全";
public void open();
public void close();
public default void test01(){
System.out.println("接口中的靜態(tài)方法");
}
public static void test02(){
System.out.println("接口中的靜態(tài)方法");
}
}
KeypadDoor
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:33
*/
public class KeypadDoor implements Door{
@Override
public void close() {
System.out.println("鍵盤開門");
}
@Override
public void open() {
System.out.println("鍵盤關(guān)門");
}
}
PowerDoor
package Demo03;
/**
* @qvthor liuwenzheng
* @date 2021/4/29 17:32
*/
public class PowerDoor implements Door{
@Override
public void open() {
System.out.println("開門");
}
@Override
public void close() {
System.out.println("關(guān)門");
}
}