對介面的一些理解

2021-09-12 19:49:14 字數 2565 閱讀 8166

萌新第一次寫部落格。。。

初學物件導向時,對介面和抽象方法有點搞不清楚,所以就總結一波~~

一:介面的一些基本知識

介面是乙個抽象型別,是抽象方法的集合,介面通常以inte***ce來宣告。乙個類通過繼承介面的方式,從而來繼承介面的抽象方法。介面不可以被例項化但是可以被繼承。在我的理解中,介面就是規定了被繼承類必須實現的方法,是對類所能實現的方法的擴充套件。(這句話好像有點不好理解,待會有例子說明)。

在介面中,所有的變數都預設為public static final(而且只能這樣),所有的方法預設都是public abstract(只能這樣)。

下面解釋為什麼變數要這麼宣告。首先介面是支援多繼承的,用static就可以區分不同介面的同名變數。因為用了static,所以這個變數能所有實現這個介面類的類改變,這明顯不合理。(ps:這只是我的個人理解)

二:介面與抽象類的區別:

抽象類是「父類子類是或不是的關係」,是對乙個事物的抽象。介面是對行為的抽象,是有或沒有的關係。乾說沒意思,上乙個老師給我們說過的例子:

假設有一款遊戲,每種裝備都都有它的名稱,**。同時假設每種裝備都有他的被動技能,但是有的裝備具有攻擊力加成特性,攻速加成特性等等。有的裝備具有護甲特性,血量加成等等。

在遊戲中。只要是裝備的類,都可以繼承乙個父類:

public abstract class equip
有的裝備能攻擊,有的裝備能防守,所以我們要對行為進行抽象,就可以用介面來實現。

inte***ce inte***ceack 

inte***ce inte***cepro

現在用有一件裝備是法杖吧,他只能攻擊而不能防守。所以他要繼承裝備這個父類以及「擁有」攻擊這個介面。

class wand  extends equip implements  inte***ceack

//然後實現介面的方法,這個是一定要實現的,而且繼承的介面中有幾個抽象方法,就要實現幾個方法

public void atk()

}

另外有一件裝備盔甲,它只能保護而不能攻擊:

class armor extends equip implements inte***cepro

public void protect() ;

三:介面與介面之間的繼承,介面與抽象類之間的繼承:

直接上**:

inte***ce a

inte***ce b

inte***ce c extends a,b

class d implements c

public void funb() {}

public void func() {}

}abstract class e implements c

四:介面的作用:

方便維護,管理。還起到約束的作用。

舉例:(這是乙個不怎麼好的例子)

class dog	

}class cat

}//現在test類要模擬動物的叫聲

class test

if(animal=="cat")

}}

這樣的**在我初學的時候覺得很好,但現在就不是這樣想了。現在開始改善**,首先想到的是用多型來減少**的冗餘。

class animal	}

class dog extends animal

}class cat extends animal

}//現在test類要模擬動物的叫聲

class test

animal.call(); }

}

現在**給了別人,別人想在此基礎上加乙個獅子類並加乙個叫的方法,於是寫成了這樣

class lion extends animal

}

這樣的話我的多型就用不了了。

再改進:在父類使用abstract修飾方法,這樣子類就必須實現這個call()方法,這樣就可以用多型了。但是現在我們要新加乙個類叫魚,魚不會叫但我們又必須實現讓他叫的方法,而且知道它不會叫也不會呼叫這個方法。我覺得還是有點怪。

其實可以用介面來解決這個問題。**如下:

abstract class animal

inte***ce animalcall

class dog extends animal implements animalcall

}class cat extends animal implements animalcall

}class lion extends animal implements animalcall

}//現在test類要模擬動物的叫聲

public class inte***cetest

animal.call(); }

}

其實我我對它的作用理解的也不是很深~~

對介面的理解

以下是我在ms news group裡,對 什麼情況下定義inte ce 這一問題的回答,基本上體現我現在對inte ce的理解,可能有不足或者完全就是謬誤,希望能得到大家的指正 乙個類實現了某個介面,就相當於宣告我能夠完成某項工作。比如乙個類實現了icomparable介面,就相當於宣告了我可以完...

對UART介面的理解

uart是一種通用序列資料匯流排,用於非同步通訊。該匯流排雙向通訊,可以實現全雙工傳輸和接收。在嵌入式設計中,uart用來與pc進行通訊,包括與監控偵錯程式和其它器件,如eeprom通訊。uart通訊 uart首先將接收到的並行資料轉換成序列資料來傳輸。訊息幀從乙個低位起始位開始,後面是7個或8個資...

對IDisposable介面的理解

本人最近接觸乙個專案,在這個專案裡面看到很多類實現了idisposable介面.在我以前的專案中都很少用過這個介面,只知道它是用來手動釋放資源的.這麼多地方用應該有它的好處,為此自己想對它有進一步的了解,但這個過程遠沒有我想象中的簡單.idisposable介面定義 定義一種釋放分配的資源的方法。n...