一、介面的作用 1.可以使項目分層,所有層都面向介面開發,開發效率提高了。 2.介面使代碼和代碼之間的耦合度降低,就像記憶體條和主板的關係,變得“可插拔”,可以隨意切換。 總結:介面和抽象類能夠完成某個功能,優先選擇介面。因為介面可以多實現、多繼承。並且一個類除了實現介面之外,還可以去繼承其他類( ...
一、介面的作用
1.可以使項目分層,所有層都面向介面開發,開發效率提高了。
2.介面使代碼和代碼之間的耦合度降低,就像記憶體條和主板的關係,變得“可插拔”,可以隨意切換。
總結:介面和抽象類能夠完成某個功能,優先選擇介面。因為介面可以多實現、多繼承。並且一個類除了實現介面之外,還可以去繼承其他類(保留了類的繼承)。
層次為:
測試類=====介面=====實現類
我們首相定義好介面,然後測試類使用介面定義好的變數或者方法進行調用,實現類則根據介面的定義來編寫介面的實現類。
例如:Jiekou j1 = new Shixianlei();其中類Shixianlei是介面Jiekou的實現。
二、這裡舉個例子
(1)創建一個"引擎“介面
(2)創建”賓士“和”奧迪“兩個引擎介面的實現類
(3)創建一個”車”類,裡面可以加入兩種引擎
(4)最後創建一個測試類,用來測試兩種引擎的車
package com.bjpowernode.java_learning; public interface D55_1_Engine { public void launch(); }
package com.bjpowernode.java_learning; public class D55_2_Benz implements D55_1_Engine{ public void launch() { System.out.println("Benz引擎啟動"); } }
package com.bjpowernode.java_learning; public class D55_3_Audi implements D55_1_Engine { public void launch() { System.out.println("Audi引擎啟動"); } }
package com.bjpowernode.java_learning; public class D55_4_Car { D55_1_Engine e;//這個類中的成員變數創建的必要性,這是為了能夠讓引擎的對象傳進來,進行引擎對象的調用 D55_4_Car(D55_1_Engine e){ this.e = e; } public void testEngine() { e.launch(); } }
package com.bjpowernode.java_learning; public class D55_5_test { public static void main(String[] args) { //生產引擎 D55_1_Engine e1 = new D55_2_Benz(); D55_1_Engine e2 = new D55_3_Audi(); //生產汽車 D55_4_Car c1 = new D55_4_Car(e1); D55_4_Car c2 = new D55_4_Car(e2); c1.testEngine(); c2.testEngine(); } }
三、源碼:
D55_1_Engine.java
D55_2_Benz.java
D55_3_Audi.java
D55_4_Car.java
D55_5_test.java
地址:
https://github.com/ruigege66/Java/blob/master/D55_1_Engine.java
https://github.com/ruigege66/Java/blob/master/D54_2_InterfaceExercise.java
https://github.com/ruigege66/Java/blob/master/D55_3_Audi.java
https://github.com/ruigege66/Java/blob/master/D55_4_Car.java
https://github.com/ruigege66/Java/blob/master/D55_5_test.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料