java interface 接口的使用好處分析
本文實例講述了java interface 接口的使用優(yōu)點。分享給大家供大家參考,具體如下:
接口interface 的作用是什么?
假設在以前我們開發(fā)了某個業(yè)務的實現(xiàn)類Demo1,現(xiàn)在根據(jù)需求我們需要重新設計該業(yè)務的實現(xiàn)類Demo2且不能影響其它業(yè)務的運行。
這時候就需要一個標準,一個針對該業(yè)務實現(xiàn)的一個標準接口(standard interface)。而所有實現(xiàn)該接口(interface)的類都需要去實現(xiàn)該接口的方法。通過java向上轉(zhuǎn)型實現(xiàn)針對不同的業(yè)務有不同類的實現(xiàn)。
注釋:
1、interface 只有方法名和返回值,沒有方法體,都是抽象方法。切不能直接實例化(通過他的實現(xiàn)類向上轉(zhuǎn)型獲得該接口的實現(xiàn))。
Test.java
package Test; public interface Test { //定義了一個接口方法 public String getTestText(); }
Test1.java
package Test; public class Test1 implements Test { @Override public String getTestText() { return "this class name is test1"; } }
Test2.java
package Test; public class Test2 implements Test { @Override public String getTestText() { return "this class name test2"; } }
Index.java
import Test.Test; public class Index { public static void main(String[] args) throws Exception { Test test1 = testIndex("Test.Test1"); System.out.println(test1.getTestText()); Test test2 = testIndex("Test.Test2"); System.out.println(test2.getTestText()); } public static Test testIndex(String classPath) { Test test = (Test)Class.forName(classPath).newInstance(); return test; } }
至此,你看出這樣用的好處了嗎?Test1和Test2都實現(xiàn)了接口Test 如果以后要更改Test的實現(xiàn)或者是針對不同業(yè)務有不同的Test實現(xiàn),我們都可以動態(tài)的載入針對Test不同的實現(xiàn)類。
接口與接口之間是可以繼承的
Demo1.java
package Demo; public interface Demo1 { public String getName(); }
Demo2.java
package Demo; public interface Demo2 extends Demo1 { public String getAge(); }
Demo3.java 繼承Demo2 需要實現(xiàn)Demo1和Demo2中的接口方法
package Demo; public class Demo3 { @Override public String getName() { return "my name is Mr.tan"; } @Override public String getAge() { return "my age is 22"; } }
其實本質(zhì)就是一個類的多鐘表現(xiàn)形態(tài)(多態(tài))。針對不同的業(yè)務,相同的接口或者是類通過不同的實現(xiàn)類向上轉(zhuǎn)型表現(xiàn)出不同的形態(tài)。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O計入門與進階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關(guān)文章
Spring Data JPA 整合QueryDSL的使用案例
QueryDSL 是一個用于構(gòu)建類型安全的 SQL 查詢的 Java 庫,它的主要目標是簡化在 Java 中構(gòu)建和執(zhí)行 SQL 查詢的過程,同時提供類型安全性和更好的編碼體驗,對Spring Data JPA 整合QueryDSL使用案例感興趣的朋友跟隨小編一起看看吧2023-08-08SpringMVC使用@PathVariable接收參數(shù)過程解析
這篇文章主要介紹了SpringMVC使用@PathVariable接收參數(shù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10springboot中EasyPoi實現(xiàn)自動新增序號的方法
本文主要介紹了EasyPoi實現(xiàn)自動新增序號,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Spring中BeanFactory?FactoryBean和ObjectFactory的三種的區(qū)別
關(guān)于FactoryBean?和?BeanFactory的對比文章比較多,但是對ObjectFactory的描述就比較少,今天我們對比下這三種的區(qū)別,感興趣的朋友跟隨小編一起看看吧2023-01-01springBoot+dubbo+zookeeper實現(xiàn)分布式開發(fā)應用的項目實踐
本文主要介紹了springBoot+dubbo+zookeeper實現(xiàn)分布式開發(fā)應用的項目實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08java通過jni調(diào)用opencv處理圖像的方法
今天小編就為大家分享一篇java通過jni調(diào)用opencv處理圖像的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08