abstract修飾符 和 interface修飾符
阿新 • • 發佈:2019-01-08
==== abstract ================================================================================================ 首先,用abstract(抽象)修飾符指示所修飾的內容是缺少實現或未完全實現的。
abstract 修飾符可用於類、方法、屬性、索引器和事件(不能修飾字段),只有抽象類中才能宣告抽象的方法、屬性、索引器和事件(當然其中也可以有非抽象的成員)。 抽象類只能是基類,它不能實現自己的例項,因此也就不能為static,標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類用override來實現。 被宣告為抽象的方法不能有自己的方法體,只能這樣:public abstract void fun();在抽象類中宣告,而且在子類中必須最終實現它。 abstract修飾符其實很好理解,就是對那些從面向物件的思想中某一類的抽象出來的類進行修飾,所以它的使用意義就在這裡。然後明白它的一些規定,就可以了。
================================================================================================ 其次,還有很多人把abstract和interface混淆,其實這也是兩個毫不相干,不同層面的東西,要說勉強說他們的共性只能說都是用到OOP總的抽象思想,下面結合《大話設計模式》一書中的表述和自己的說明闡明一下: 從程式碼層面上: 抽象類可以給出一些成員的實現,介面卻不包含成員的實現,抽象類的抽象成員可以被子類實現,抽象成員需要實現類完全實現(即抽象類中可以有非抽象成員,他們可以有自己實現的內容,而且被子類繼承時那些抽象的成員也可以實現;但是介面卻不同,他們必須在繼承它們的類中實現)。
一個子類只能繼承一個父類,但是可以有多個介面 利用介面有兩種方式:隱式執行介面成員和顯式執行介面成員 其中隱式可以通過類和介面訪問,而顯式只能通過介面訪問 從他們的思想用途上: 1、思想上:類是對物件的抽象,而介面是對行為的抽象(覺得行為這個詞用的很好); 2、用途上:如果行為跨越不同的物件用介面,對於一些類似的類,用抽象類繼承; 3、關係上:不是衝突的 4、設計角度上:抽象類是從子類中發現了公共的東西,泛化出父類,然後子類繼承父類,而介面設計時根本就不知道或者根本不用考慮子類的存在,方法如何實現還不確認,預先定義。
以上幾點應該很容易讓大家明白 介面 是怎麼一回事了吧? interface ================================================================================================ 最後,說說介面的用法和用途。 1、介面 interface 只包含 方法、屬性、事件或索引器的簽名(即不包括實現內容,和抽象成員類似,不能有具體的實現); 2、實現介面的類或結構必須實現介面中定義的介面成員(這個和抽象類的繼承有類似,必須在使用它的類中完善他)
3、我們已經知道了介面是對行為的一種抽象,那麼很明顯,就不能限制一個類只能有一個,所以,一個類可以有多個介面。