整理一下最近的收穫,java中介面的使用
最近在看公司的專案,發現關於介面的使用很多,但是因為沒有經常使用介面的習慣,感覺程式碼好難看懂,可能是自己一直的程式碼都不規範導致的吧。其實使用介面,可以方便很多事情,java裡面設計介面也不是沒有道理的。
說一下自己的簡單理解吧,在父類中宣告介面,並且呼叫介面,在子類中宣告介面的具體實現方法。
一個簡單的demo方便理解:
A類:
public interface OnItemCLickListener{
void onItemClick(View view);
}
private OnItemClickListener mOnItemClickListener;
public void setOnTestClick(OnItemClickListener mOnItemClickListener){
this.mOnItemClickListener = mOnItemClickListener;
}
view.setOnClickListener(
new OnClickListener(View view){
public void click(){
mOnItemClickListener.onItemClick(view);
}
}
);
即在A類中宣告介面,並且呼叫介面,但是沒有給定具體的實現方法,可以在B類中宣告具體的實現方法
B類:
A a = new A();
a.setOnTestClick(new OnItemClickListener(){
public void onItemClick(View view){
//具體實現方法
}
})
這就是簡單介面的實現,再整理一遍:在A類中宣告介面呼叫,在B類中實現介面的方法。
在以後的開發中,儘量多的使用介面,可以提高程式碼的複用率,減少程式碼量,並且可以方便開發
存在即合理。剛接觸介面的時候,裡面只有方法名,沒有具體的實現方法,感覺沒有什麼用,從最近接觸專案來說,介面的用處實在強大、方便。但是希望不要濫用,我是深受其害。。。
一般在專案中,子類重用某種方法的時候,合理的使用介面,可以讓專案程式碼簡潔、美觀、大氣。
介面的出現,很好的彌補了java中不能多繼承的缺陷,介面應該就是因為這個原因出現的,實際上也確實彌補了沒有多繼承的不方便性。在類中繼承介面,跟繼承類後的效果是一樣的。如
public class D{
public void methodD(){
....
}
}
public interface C{
void methodC();
}
class A implements C{
public void methodC(){
....
}
}
class B extends D implements C{
public void methodC(){
....
}
}
A a = new A();
B b = new B();
C ca = new A();
C cb = new B();
ArrayList<C> cs = new ArrayList<>();
cs.add(a);
cs.add(b);
ca.methodC();
cb.methodC();
cb.methodD();// 此方法是錯誤的,介面C中沒有此方法
以上程式碼只是簡單的理解介面的使用,看似簡單的程式碼,真正使用起來是很方便易用的,對介面的加深理解,可以更加規範自己的程式碼,有利於程式碼的複用。在一些特殊的場合,介面總能展現出他存在的意義、價值與魅力。
相關推薦
整理一下最近的收穫,java中介面的使用
最近在看公司的專案,發現關於介面的使用很多,但是因為沒有經常使用介面的習慣,感覺程式碼好難看懂,可能是自己一直的程式碼都不規範導致的吧。其實使用介面,可以方便很多事情,java裡面設計介面也不是沒有道理的。 說一下自己的簡單理解吧,在父類中宣告介面,並且呼叫介
你所不知道的,Java 中操作符的秘密?
tint 正常的 示例 itl 相等 params obi equal 拷貝 在 Java 編程的過程中,我們對數據的處理,都是通過操作符來實現的。例如,用於賦值的賦值操作符、用於運算的運算操作符等、用於比較的比較操作符,還包括邏輯操作符、按位操作符、移位操作符、三元操作符
整理一下最近Android面試的提問
VC 順序 大小 機制 速度慢 efault 結構 基本類 取代 java相關: 1. public protect private default關鍵字有什麽區別? public:表示可以在任何一個類中被訪問; protect:表示可以在自身、子類以及
Oracle中存儲圖片的類型為BLOB類型,Java中如何將其讀取並轉為字符串?
ava 字節數組 object [] str string類 arch data mpi 一,讀取圖片轉為String類型: 需要使用Sun公司提供的Base64工具 String str = ((Map) list1.get(0)).get("EINVOICEFILE")
java中介面(interface)及使用方法和注意事項
1、介面:一種把類抽象的更徹底,接口裡只能包含抽象方法的“特殊類”。介面不關心類的內部狀態資料,定義的是一批類所遵守的規範。(它只規定這批類裡必須提供某些方法,提供這些方法就可以滿足實際要求)。 在JAVA程式語言中是一個抽象型別,是抽象方法的集合,介面通常以interface來宣告。一個類通過
java中介面與抽象類異同點與在專案中的應用
1包 作用: 管理類 定義: package 包名; package必須作為原始檔 的第一條語句 包名的命名規則 使用其他包中的類 完整類名 先import匯入類,再使用 2 Eclipse 3 訪問許可權 類的訪問許可權: 公共類, 非公共類 公共類的應用場景
Java中,Java中volatile關鍵字十分重要
在Java中,Java中volatile關鍵字十分重要 本文全面 & 詳細解析volatile關鍵字,希望你們會喜歡 目錄 1. 定義 Java 中的1個關鍵字 / 修飾符 2. 作用 保證 被 volatile修飾的共享變數
js中對map的非空判斷,java中對map的非空判斷
js函式中判斷map是否為空 if (JSON.stringify(map) != JSON.stringify({})) Java中判斷map是否為空 1、map.isEmpty 2、map == null 是指沒有引用的物件。 map.size() == 0 指map中沒有元素。
java中介面是否可以繼承多個介面?
以下內容轉自:http://blog.csdn.net/tiantiandjava/article/details/46514783 介面是常量值和方法定義的集合。介面是一種特殊的抽象類。 java類是單繼承的。classB Extends classA java介面可以多繼承。Inte
Linux下,Java圖形介面程式中文顯示不正常(顯示為方格)問題解決
RedHat或其它Linux系統下中文顯示為方格,原因是JRE環境中中文字型設定異常。 1.首先找到JRE所在的目錄,如在RedHat Enterprise 6中的目錄為:/usr/lib/jvm/java-1.6.0/jre 2.將windows中文字型simsun.ttf或simsun.ttc拷
redis常見資料型別操作命令,Java中使用Jedis操作Redis
redis常見資料型別操作命令 可參考地址:Http://redisdoc.com/ Java中使用Jedis操作Redis: https://www.cnblogs.com/liuling/p/2014-4-19-04.html redis鍵(key)
Java中介面、類的繼承和實現小問題
以下這個問題其實是一個很low的問題,但確實很基礎 今天在看JDK原始碼中發現這一行程式碼: public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> 奇怪了,
深入理解計算機系統(2.8)---浮點數的舍入,Java中的舍入例子以及浮點數運算(重要)
https://www.cnblogs.com/zuoxiaolong/p/computer12.html 前言 上一章我們簡單介紹了IEEE浮點標準,本次我們主要講解一下浮點運算舍入的問題,以及簡單的介紹浮點數的運算。 之前我們已經提到過,有很多小數是二進位制
熟悉Java String的使用,熟悉String的各種函式,Java中各種變數型別
1.JDK 6和JDK 7中substring的原理及區別 substring(int beginIndex, int endIndex)方法擷取字串並返回其[beginIndex,endIndex-1]範圍內的內容。 String x = "abcdef"; x = x.substri
【詳細】JAVA中介面和抽象類的區別
介面是常用的,在這裡都不舉例程式碼了 抽象類 介面 實現方式 實現方式 介面完全是抽象的。它根本不存在方法的實現 介面完全是抽象的。它根本不存在方法的實現 構造器 構造器 抽
輕鬆學,Java 中的代理模式及動態代理
前幾天我寫了《秒懂,Java 註解 (Annotation)你可以這樣學》,因為註解其實算反射技術中的一部分,然後我想了一下,反射技術中還有個常見的概念就是動態代理,於是索性再寫一篇關於動態代理的博文好了。 我們先來分析代理這個詞。 代理 代理是英
Java中介面與抽象類的區別
java中介面和抽象類自己理解起來經常混淆,所以我就整體總結一下這兩個概念。 1. 介面 介面是指一個方法的集合,介面中所以的方法都沒有方法體,使用interface關鍵字來實現。注意,介面中可以有成員變數,但是成員變數必須是static final型別
java中介面內的匿名內部類
什麼是介面和匿名內部類 介面: java中的介面定義:多個抽象類的抽象就是介面. Java中的介面表示規範,用於定義一組抽象方法,表示某一類事物必須具備的功能,要求實現類必須來實現該介面並提供方法實現. Java介面的方法只能是抽
浮點數的那些坑,Java中的金額處理方案
Java中的浮點數由於精度問題經常出現意料之外的結果,而我們又不得不和RMB打交道的 有任何問題,歡迎Email to: [email protected] 1.舉個栗子: public static void main(String[] args) {Syst
Java中介面和抽象類的學習總結
對於介面和抽象類,自己也不是很清楚,特別是對於其內部的一些約束,總是記不得,所以在此做一定的記錄,供大家學習使用。 在java語言中,abstract class和interface是支援抽象類定義的兩種機制。在面向物件的概念中,我們知道所有的物件都是通過類來描繪的,但是反過來