工欲善其事必先利其器,何不給IDEA來一次調優呢?
阿新 • • 發佈:2020-08-13
package ejiekou; /* * 介面也是一種引用型別,可以等同看做類 * * 1.如何定義介面,語法: * [修飾符] interface 介面名{} * * 2.介面中只能出現:常量、抽象方法 * * 3.介面其實是一個特殊的抽象類,特殊在介面是完全抽象的 * * 4.介面中沒有構造方法,無法被例項化 * * 5.介面和介面之間可以多繼承 * * 6.一個類可以實現多個介面。(這裡的"實現"可以等同看做"繼承") * * 7.一個非抽象的類實現介面,需要將介面中所有的方法"實現/重寫/覆蓋"*/ public interface A { //常量(必須用public static final修飾) public static final String SUCCESS = "success"; public static final double PI = 3.14; //public static final是可以省略的 byte MAX_VALUE = 127; //常量 //抽象方法(介面中所有的抽象方法都是public abstract) public abstract void m1(); //public abstract是可以省略的void m2(); } interface B{ void m1(); } interface C{ void m2(); } interface D{ void m3(); } interface E extends B,C,D{ void m4(); }
package ejiekou; //implements是實現的意思,是一個關鍵字 //implements和extends意義相同 public class MyClass implements B,C{ public void m1(){}; public voidm2(){}; }
package fjiekouzuoyong; /* 客戶類介面 * * 介面作用: * 1.可以使專案分層,所有層都面向介面開發,開發效率提高了 * 2.介面使程式碼和程式碼之間的耦合度降低, * 就像記憶體條和主機板的關係,變得可插拔”。可以隨意切換 * * 介面和抽象類都能完成某個功能,優先選擇介面 * 因為介面可以多實現,多繼承 * 並且一個類除了實現介面之外,還可以去繼承其他類(保留了類的繼承) */ public interface CustomerService { //定義一個退出系統的方法 void logout(); }
package fjiekouzuoyong; /* * 編寫介面的實現類 * 該類的編寫完全是面向介面去實現的 */ public class CustomerServiceImpl implements CustomerService{ //對介面中的抽象方法進行實現 public void logout(){ System.out.println("成功退出系統!"); } }
package fjiekouzuoyong; public class Test { //入口 public static void main(String[] args) { //要執行CustomerServiceImpl中的logout方法 //以下程式面向介面去呼叫 CustomerService cs = new CustomerServiceImpl(); //多型 //呼叫 cs.logout(); } }
package gjiekouzuoyong; /* * 汽車和發電機之間的介面 * * 生產汽車的廠家面向介面生產 * 生產發動機的廠家面向介面生產 */ public interface Engine { //所有發動機都可以啟動 void start(); }
package gjiekouzuoyong; public class YAMAHA implements Engine{ public void start(){ System.out.println("YAMAHA引擎啟動"); } }
package gjiekouzuoyong; public class HONDA implements Engine { public void start(){ System.out.println("HONDA引擎啟動"); } }
package gjiekouzuoyong; public class Car { //成員變數 //引擎 //面向介面程式設計 Engine e; //構造方法 Car(Engine e){ this.e = e; } //汽車應該能夠測試引擎 public void testEngine(){ e.start(); //面向介面呼叫 } }
package gjiekouzuoyong; public class Test { public static void main(String[] args) { //1、生產引擎 Engine e1 = new YAMAHA(); //多型 //2、生產汽車 Car c = new Car(e1); //3、測試引擎 c.testEngine(); //4、換HONDA c.e = new HONDA(); c.testEngine(); } }