在繼承那篇博文裏,咱們已經簡單瞭解了 Java 接口的概念。即:接口是用來描述對象具備的某種「功能」,而不關心具體實現。或者說,接口比如服務商指定的標準,由代加工工廠遵照來生產。java
這裏是一個 Java 裏的接口示例:segmentfault
public interface Comprable<T>{ int compareTo(T other); }
Java 8 中,接口裏能夠包含:設計模式
在Java 裏,定義了一些標記接口(tagging interface),實現了這些接口的類,語義上應具備接口的特性。如:ide
- 實現(implements)
Comparable
接口的類,咱們默認其具備可比較的特性;- 實現
Clonable
接口的類,咱們默認其具備可克隆的特性(Object 類默認實現該接口,具備淺拷貝的能力);- 實現
Serializable
接口的類,咱們默認其具備可序列化的特性。
Java 的接口還有一個比較重要的應用,那就是回調。設計
回調是一種比較常見的設計模式,其本質是在發生某種事件時應採起的某種行爲。code
Java 容許在類中定義其它類,這種定義在類中的類叫作嵌套類(nested class)。其中,對象
嵌套類主要有以下兩種功能:繼承
主要有兩種特別的內部類:接口
局部類可訪問的成員範圍以下:事件
匿名類容許同時定義和初始化一個類,常被用做那些只使用一次的場景中。局部類是聲明,匿名類是表達式。
下面是一個匿名類的使用示例代碼:
interface SomeInterface{ public void doSomething(); } public void function(){ SomeInterface someInterface = new SomethingInterface(){ @Override public void doSomething(){ // implement here... } } }
匿名類中主要包含以下內容:
匿名類能夠訪問的成員範圍是:
Lambda 表達式中包含的內容以下:
Lambda 表達式中不存在變量的屏蔽問題。
若是 Lambda 表達式中引用已經存在的方法,那麼能夠用 類::方法名
來引用方法。
有四種類型的方法引用:
類型 | 引用方式 |
---|---|
引用靜態方法 | 類名::方法名 |
引用特定對象的方法 | 對象名::方法名 |
引用特定類型的任意對象的示例方法 | 類型::方法名 |
引用構造方法 | 類名::new |
Lambda 表達式: