接口是一種引用數據類型。使用interface聲明接口,形式java
public interface 接口名稱{編程 }spa |
[1] 接口中能夠聲明屬性(C)。接口中定義的全部變量都是static final類型的。設計
public interface MyInterface {對象 public static final String version = "1.0";繼承 public int count = 10; // 默認是static final類型接口 }內存 |
通常不多在接口中聲明屬性。ci
[2] (C)接口中的方法都是公共抽象方法。io
public interface MyInterface { public abstract void showInfo(); void showInfo3();
// 推薦寫法 public void showInfo2(); } |
[3] (C)接口不能擁有構造方法,不能用於建立對象
|
[4] 接口能夠多繼承。一個接口能夠繼承多個其餘接口(B)
|
public interface CInterface extends AInterface, BInterface {
} |
CInterface接口就具有了A、B接口中定義的抽象方法。
[5] (A) 一個類能夠實現一個或者多個接口,該類稱爲接口的實現類(implement class).
實現類必須實現接口中的全部(抽象)方法
總結:
實現類實現接口,必須實現接口中定義的抽象方法。
接口中定義的一些系列方法表示的是一種種的能力。接口讓實現類實現這些能力,實現類的能力獲得拓展和升級。
實現類根據自身特性實現接口中定義的方法。
接口實現多態: 接口類型 引用 實現類對象
繼承實現多態: 父類類型 引用 子類對象
接口定義的方法被實現類實現,經過接口引用實現類時,調用接口中的方法時,執行的是實現類實現的方法。
實現類對象具有接口中定義的能力 是一種has a 關係
子類對象是一種父類類型 是一種is a 關係
接口表示一種約定(協議),約定(規範)了實現類應該具有(has a)的能力。
理解:
=>實現類必須實現接口中全部的方法,因此接口規範了實現類的行爲
=> 接口約定了實現類應該具有的行爲。
面向接口編程
所謂面向接口編程,在程序設計時,只關心實現類具有什麼能力,而不關心實現類如何實現這個能力。面向接口編程時,面向接口的約定而不考慮接口的具體實現。
也就是說,面向接口編程時,接口的定義方只關係實現類是否具有接口所定義的能力,而實現類如何被的該能力接口定義方一點都不關心。
Object 類是全部類的根類。
若是一個類沒有顯示繼承另一個類,那麼該類必定繼承於Object。
equals(Object obj) 用於判斷兩個對象是否相等。
== 比較兩個對象的內存地址或基本數據類型的比較,object默認equals實現比較內存地址。
equals:用於比較兩個對象的內容(屬性)是否相等。
當自定義對象時,要比較自定義對象是否相等,就必須經過equals方法比較兩個對象屬性值是否相等,那就必須重寫Object的equals方法。
在java中,一個文件能夠定義多個類,文件名必須和public 類型的類的類名保持一致。這兩個類是平行關係。
在java中,一個類也能夠定義在一個類的內部,定義在內部的類稱爲內部類(inner class),定義在外部的類稱爲外部類(out class).
public class Outer {
[修飾符] class Inner{
} } |
一個內部類做爲一個外部類的成員而存在,此時該內部類稱爲外部類的成員內部類。