Java中的辨別接口
由于java不支援多重繼承,即一個類隻能有一個父類,為了克服單繼承,引入了接口的概念.由于一個類可以實作多個接口,可采用實作多個接口來達到多重繼承的目的。
接口是抽象方法定義的集合(也可以定義一些常量值),是一種特殊的抽象類。接口中成員的作用域修飾符都是public,接口中的常量值預設使用public static final修飾.
辨別接口
如果接口内部沒有聲明任何方法,則它僅僅充當一個辨別的作用,用來表明實作它的類屬于一個特定的類型。類似于汽車标志圖示,當看到汽車的标志圖示時,就可以知道這款汽車的品牌。java類庫中已存在的辨別接口有Cloneable和Serializable等。
在使用時會經常用instanceof來判斷執行個體對象的類型是否實作了一個給定的辨別接口。以做一些必要的操作。
java.io.Serializable:未實作此接口的類将無法使其任何狀态序列化或反序列化.為保證 serialVersionUID 值跨不同 java 編譯器實作的一緻性,序列化類必須聲明一個明确的 serialVersionUID 值.
java.lang.Cloneable:表明Object.clone()方法可以合法地對該類執行個體進行按字段複制.實作此接口的類應該使用公共方法重寫 Object.clone(它是受保護的).如果在沒有實作 Cloneable 接口的執行個體上調用 Object 的 clone 方法,則會導緻抛出 CloneNotSupportedException 異常.
java.util.RandomAccess:用來表明其支援快速(通常是固定時間)随機通路.此接口的主要目的是允許一般的算法更改其行為,進而在将其應用到随機或連續通路清單時能提供良好的性能.
java.rmi.Remote:Remote 接口用于辨別其方法可以從非本地虛拟機上調用的接口.任何遠端對象都必須直接或間接實作此接口.隻有在“遠端接口”(擴充 java.rmi.Remote 的接口)中指定的這些方法才可遠端使用.