萌新第一次寫部落格。。。
初學物件導向時,對介面和抽象方法有點搞不清楚,所以就總結一波~~
一:介面的一些基本知識
介面是乙個抽象型別,是抽象方法的集合,介面通常以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...