抽象方法:當(dāng)類中的方法在聲明的時(shí)候加上 abstract關(guān)鍵字的時(shí)候,他就被我們稱為抽象方法(洋名字叫abstract method ,其實(shí)偷偷告訴你哈,我最近學(xué)了好多英文單詞,雖然還是常常讀錯(cuò),但是已經(jīng)有很大進(jìn)步了,估計(jì)要不了多久就可以在那里大聲朗讀李白曾經(jīng)寫過的一首英文詩(shī)歌了),但是有個(gè)很重要的提醒,只有在抽象類和接口中才可以使用抽象方法.
例如 : 下面這個(gè)
public abstract class Thc123_Com
{
public abstract voidGoTo();
}
public class Thc123_Net : Thc123_Com
{
publicoverride void GoTo()
{
//實(shí)現(xiàn)上面抽象方法
}
}
=========================================================================================
在講接口之前呢我又想跟大家吹下牛,大家知道我們的組裝計(jì)算機(jī),即便是那些品牌機(jī)他實(shí)際上也是來自很多不同的廠商然后組裝起來的,那么這寫硬件之間就有一個(gè)必然的聯(lián)系,那就是他們之間一定要有規(guī)范的接口,可是就拿我們的主板來說吧,這個(gè)CPU,他既可以是賽陽(yáng)的,也可以是奔騰的,更可以是速龍,閃龍,當(dāng)然我跟特別非常十分希望再加上一個(gè)咱們中國(guó)的CPU品牌,這些CPU肯定采用了一些不同的運(yùn)算方式啊,所以說我們這個(gè)接口就還要學(xué)會(huì)一點(diǎn)(我們常常勸老人的話,他只要在孝順你,你就別關(guān)他那么多的家務(wù)事),說得太好了,我們的接口還要做的事就是不管對(duì)方是怎么實(shí)現(xiàn)的,反正你插到這里面((*&^#@*&^%$%^$$?!纾┠憔鸵獙?shí)現(xiàn)具體的功能,至于你怎么實(shí)現(xiàn)就不管那么多了.
接口:他呢其實(shí)也是一種特殊的抽象類,用interface 關(guān)鍵字標(biāo)記,他的定義沒有 class關(guān)鍵字,他可以包含方法和屬性和事件,但是方法也只能是虛擬方法,任何派生于該接口的類就必須提供執(zhí)行的代碼.任何接口成員前面都不能加修飾符.
接口可用的修飾符有 new ,public ,protected , internal , private,但是同一聲明中修飾符只能有一個(gè),new關(guān)鍵字只能出現(xiàn)在鑲套接口中,表示復(fù)寫繼承來的同名成員.

接口和類一樣,可以被繼承和發(fā)展,但不同的是,類繼承不僅說明繼承也會(huì)實(shí)現(xiàn)繼承,但是接口繼承只是說明繼承,通俗的說,派生類可以繼承基類的方法實(shí)現(xiàn),而派生接口只是繼承父接口的方法說明,卻沒有繼承父接口的實(shí)現(xiàn).
語(yǔ)法:
interface Ibook
{
string GetBookName();
}
接口相關(guān)知識(shí):
1.聲明在接口中的方法,不可以包含方法的內(nèi)容區(qū)塊,簡(jiǎn)單來說就是不能有大括號(hào)存在,例如下面
public interface Ibook
{
string GetBookName()
{ }
}
2. 實(shí)現(xiàn)接口的類就要這樣寫
public class Employee:Ibook , IUser
{
}
3 . 實(shí)現(xiàn)接口需要注意的一些東東
(1).實(shí)現(xiàn)一個(gè)接口就必須完成接口里的所有方法.(就好象誰家有幾個(gè)女兒,有漂亮的有對(duì)不起觀眾的,我要去娶那個(gè)漂亮的,然后人家開口了,小伙子,你要娶我女兒可以,但是你必須把幾個(gè)女兒全部娶了,否則我會(huì)讓你后悔一輩子.)
(2).在實(shí)現(xiàn)的類中又有幾點(diǎn)必須遵循的(我倒,都三重編號(hào)了,看來我寫的書后期編輯是件很棘手的事)
·存取權(quán)限必須相同 ;
·返回值類型必須相同
·方法的名稱必須相同
·參數(shù)必須相同
(3) . 接口內(nèi)的方法不能用 virtual關(guān)鍵字申明,更不要設(shè)置存取權(quán)限.
下面我們繼續(xù)來看下個(gè)例題
另外還有一種呢就是以明確的方式實(shí)現(xiàn)接口
簡(jiǎn)單來說就是方法前面必須加上接口的名稱.這個(gè)解釋起來沒有看起來明確,來吧,看這里(怎么聽這話有點(diǎn)怪怪的,難道是我思想不健康,按理說我算是生在陽(yáng)光下,長(zhǎng)在花叢中(不過18歲以后我就基本上是成長(zhǎng)在一群花蟲 中了),沒理由思想會(huì)這么XX啊.)
下面針對(duì)抽象類和接口做一個(gè)詳細(xì)的對(duì)比
| 抽象類( abstract method) | 接口 ( interface) |
| 可以包含實(shí)現(xiàn)區(qū)塊 | 不能包含實(shí)現(xiàn)區(qū)塊 |
| 可以包含抽象方法 | 不能包含抽象方法 |
| 可以包含非public成員 | 不可以包含非public成員 |
| 能繼承其他的類,包含非抽象類 | 能繼承其他接口 |
| 可以控制版本 | 無法控制版本 |
| 不能被實(shí)例化 | 不能被實(shí)例化 |
virtual:這個(gè)關(guān)鍵字表示當(dāng)前方法、屬性、索引器或事件的抽象實(shí)現(xiàn)或虛實(shí)現(xiàn)可被任何派生自這個(gè)類的擴(kuò)充類進(jìn)行復(fù)寫.
override:表示當(dāng)前方法已經(jīng)改寫了基類的同名同參數(shù)的方法、屬性、索引器或事件的抽象實(shí)現(xiàn)或虛實(shí)現(xiàn).
愛華網(wǎng)


