介面與繼承詳解
介面繼承是出自設計模式中的一個概念。介面繼承,又稱子型別化。描述了一個物件什麼時候能夠被用來替代另一個物件。
1、介面概念
介面的基本概念
介面可以多繼承介面 ,是因為介面只定義行為,並不包含類別的含義,不指代具體的某類事物, 而且, 從語義上來說 ,介面對介面的繼承稱之為擴充套件更為合適。
Java中的介面是一系列方法的宣告,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
2、什麼是介面
介面的兩種含義:
一,Java介面,Java語言中存在的結構,有特定的語法和結構;
二,一個類所具有的方法的特徵集合,是一種邏輯上的抽象。前者叫做“Java介面”,後者叫做“介面”。
[訪問修飾符] interface 介面名{
[訪問修飾符]欄位;
[訪問修飾符]方法;
}
例如:
public interface fruit { //建立一個名為fruit的介面 String a = "123"; //在介面中定義欄位 double PI = 3.14; float saleFruit(); //在方法中定義方法saleFruit() float buyFruit(); }
public interface fruit1 { //建立一個名為fruit1的介面
float saleFruit(); //在方法中定義方法saleFruit1()
}
3、介面使用
class testInterface implements fruit, fruit1 { public float buyFruit() { //此處是方法的實現 return 0; } public float saleFruit() { //此處是方法的實現 return 0; } public float saleFruit1() { //此處是方法的實現 return 0; } }
package com.liuxd;
/**
* Created by Liuxd on 2018/10/31.
*/
public abstract class testInterface implements fruit {
public float buyFruit() {
return 0;
}
}
JAVA的核心概念:介面(interface)
1、介面與類屬於同一層次,實際上,介面是一種特殊的抽象類。
interface IA{
}
public interface:公開介面
2、與類相似,一個檔案只能有一個public介面,且與檔名相同。
在一個檔案中不可同時定義一個public介面和一個public類。
3、一個介面中,所有方法為公開、抽象方法;所有的屬性都是公開、靜態、常量。
一個類實現一個介面的格式:
class IAImple implements IA{
};
4、一個類實現介面,相當於它繼承一個抽象類。
類必須實現介面中的方法,否則其為一抽象類。實現中介面和類相同。
5、介面中可不寫public,但在子類中實現介面的過程中public不可省。
(如果剩去public則在編譯的時候提示出錯:物件無法從介面中實現方法。)
6、一個類除繼承另外一個類,還可以實現介面;簡言之:單繼承多實現。
class IAImpl extends java.util.Arrylist implement IA{
}
繼承類 實現介面
這樣可以實現變相的多繼承。
一個類只能繼承另外一個類,但是它可以繼承多個介面,中間用“,”隔開。
Implements IA,IB
7、所謂實現一個介面,就是指實現介面中的方法。
介面和介面之間可以定義繼承關係,並且介面之間允許實現多繼承。
例:interface IC extends IA,IB{};
介面也可以用於定義物件
IA I=new IAImpl();
8、實現的類從父類和介面繼承的都可做執行時型別。
IAImple extends A implement IA,IB
IB I=new IAImple();
I instance of IAImple;
I instance of A;
I instance of IA;
I instance of IB;
返回的結果均為true.
介面往往被我們定義成一類XX的東西。
介面實際上是定義一個規範、標準。
通過介面可以實現不同層次、不同體系物件的共同屬性;
通過介面實現write once as anywhere。
以JAVA資料庫連線為例子:JDBC制定標準;資料廠商實現標準;使用者使用標準。
介面通常用來遮蔽底層的差異。
因此介面也因為上述原因被用來保持架構的穩定性。