1. 程式人生 > >整理一下最近的收穫,java中介面的使用

整理一下最近的收穫,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 訪問許可權 類的訪問許可權: 公共類, 非公共類 公共類的應用場景

JavaJavavolatile關鍵字十分重要

  在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是支援抽象類定義的兩種機制。在面向物件的概念中,我們知道所有的物件都是通過類來描繪的,但是反過來