對於介面的理解

2022-03-17 17:38:15 字數 1499 閱讀 6204

可能是對於介面的理解   最早是**於 計算機網路吧:層之間的通訊

所以在學習物件導向的過程中 一直難以理解「介面」    到底是**接** 

最近把書詳細的看了一遍  

發現介面是一組為實現的方法的集合。 

但是在每次使用時   都要把介面裡的方法實現了,我就想到既然介面還需要被實現  那還用介面幹嘛  直接重新寫方法 不就可以了麼        多費一步       然後從網上去查詢介面的好處

發現以下的理解  

介面用得好壞,取決於水平。但是初步的理解介面還是不難的。首先記住:類是物件的抽象,介面是方法的抽象。類的概念就不說了。單說介面吧。如果方法跨越不同類的物件,可使用介面,即然你語法很熟了,我就不去寫**了。

舉個例子吧,乙個外地的朋友突然來看你,你常常會問「你是坐車來的還是坐飛機來的?」

那麼可以定義了三個類:飛機類,船類,車類(當然,你也可以進一步把這三個類抽象為乙個類,運輸類。但為了說明介面,暫不作進一步抽象)。定義乙個介面:客運。

三種類的物件都可以各自去實現「客運」這一介面,當然它們的實現方式各不相同。

再舉一例,鳥類,飛機類,神仙類都能「飛」。這三種類都以各自的方式去實現「飛」這一介面的。

當然這兩個例子只能淺淺的說明介面,以後你在運用時去深入理解吧。但記住:介面是是方法的抽象。如果方法跨越不同類的物件,可使用介面。

從他的敘述中  

他認為  當跨越不同類的要使用大致功能相同的方法時  就可以使用介面,功能相似  但不完全相同 (功能相同  不如寫靜態函式)

然後發現這個人的理解更好一點

定義乙個介面是為了遵循同一種規範,便於程式的擴充套件。它裡面的成員可以是字段,索引器,屬性,函式,事件。

其中函式是虛函式,只有函式定義,不寫函式主體。

比如我們定義乙個鳥的介面。規定鳥:可以飛翔,可以吃食。但是具體這是什麼鳥,吃什麼食物我們不用管,有這樣乙個介面就好,後面再寫具體的鳥類時繼承這個介面,再去考慮實現具體的函式。

由此可以看出,繼承同乙個介面可以實現類的多型性,但是他們都遵循同乙個介面,有相同的類成員。

以上是我自己理解的,其他的你自己上網查吧,我個人對理論知識記得很爛。。。

他認為   介面是實現了一種規範  比如 鳥飛 神仙飛  飛機飛  具體方法不一樣 但是都是飛    可以說是一種功能      就把他們叫做介面好了       繼承介面 就告訴你      這玩意能飛  但是具體怎麼飛     咱也不知道  應該不像是他後來說的多型性 而是說 一種整體架構的角度來看程式

後來發現   介面不能用字段 但是可以用屬性   

原因是介面關心的是方法的約定,而不是方法的實現。

而具體怎麼安排字段,要什麼字段,欄位在記憶體的位置,則是內部細節,介面不應該管這麼寬。

屬性的確就是getter和setter,但獨立出來成為單獨的類別,使它更自然,使得那些物件願意對外展示的屬性(顏色,大小,年紀等),不用通過粗笨的方法來得到。

比如winform下的propertygrid,就專門顯示物件的屬性,而不理睬欄位或方法。

他的回答  也很好的說明了 介面的目的是規範

介面的理解

例如乙個entitymodel類擁有很多屬性資訊 name,age,height,weight。現在如果想使用其中的height和weight,可以定義乙個介面ibodyinfo package com.wjy.understandinte ce public inte ce ibodyinfo 然...

介面的理解

首先按我的理解來說乙個例子 這個例子被很多人提過,下面的這個是按我自己的理解來說的 小王是乙個苦逼 酷斃 程式設計師,他要開發乙個程式,其中要實現乙個功能 連線到乙個資料庫,要對資料庫進行一些操作。實現功能首先需要有乙個資料庫,在開發的時候他使用的a廠家的資料庫。假設a廠家提供的類庫中實現小王需要的...

對介面的理解

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