C 基礎知識整理 基礎知識(8) 介面

2021-08-27 01:49:10 字數 1585 閱讀 9208

前面接觸了抽象類,它的特點是子類必須實現abstract修飾的方法。以及還有virtual修飾的方法,virtual修飾的方法子類可以重寫也可以不重寫而直接使用。但是由於c#也是單繼承的,所以定義乙個父類,然後繼承來擴充套件一些類的時候,會遇到不合適的情況。因為我們程式設計師是用程式語言來描述世界的,所以我們的工程中組織類,命名類,寫方法等,最好和現實世界相似,這樣開發起來才不費勁,修改bug的時候就比較輕鬆。

比如,在乙個工程中,用到了很多窗體,有些窗體需要對其關閉事件重新處理,有些需要對其改變大小事件處理。但是每寫乙個窗體時都要寫一遍關閉事件或改變大小事件的方法,總是很煩的。這時可以用繼承嗎?

public class icontrolable1}}

public class icontrolable2

}}

試想一下,每寫乙個窗體類,都要繼承一次icontrolable1或icontrolable2總是感覺很奇怪的,因為這兩個類不是窗體類。這時有乙個東西可以實現,這就是介面。

介面,書上是這樣說的,介面是一種行為準則。而且對於介面生活中也很常見,比如我們常說usb2.0介面,usb2.0就是一種準則,所有生產usb線的廠家並沒有直接關係,但是大家都遵守usb2.0這個準則來生產,每根線的連線處,長寬高是多少,每根資料線怎麼排... 都要遵守這個準則。這樣大家生產出來的線就能通用。

對於程式來說,就好比不同的類具有相同的超類,而且都實現了超類的抽象方法。這樣所有類都有了某種準則。但是c#中是單繼承的,這樣實現起來比較困難。於是c#中就有了介面的概念。看看介面的標準形式和特點:

/// /// 1、介面不允許public,private,interna、protected修飾,因為所有的介面都是公用的;

/// 2、成員不帶**體;

/// 3、介面不能定義字段成員;

/// 4、不能用關鍵字static,virtual,abstract、sealed修飾

/// 5、乙個類可以實現多個介面

///

inte***ce imyinte***ceable

void method1();

void method2();

}

c#中對介面的命名一般是:i***able,i表示介面,able字尾。所以介面可以看做:有...能力的。

這樣可以解決上面的問題了。將兩個類修改為介面,然後其他窗體類實現就可以了。

inte***ce icontrolable1

inte***ce icontrolable2

public class mainform : icontrolable1,icontrolable2//可以實現多個介面

public event eventhandler onsizechangeevent;

public void control_sizechange(object sender, eventargs e)

}public class childform1 : icontrolable1

}public class childform2 : icontrolable2

}

這樣,**寫起來更方便了,而且不會漏寫。

java基礎知識整理(8) 介面與多型

介面是特殊的抽象類,所有的屬性都是公開靜態常量 全域性常量 所有的方法都是公開抽象方法而且沒有構造方法。介面是對外暴露的規則。介面是程式的功能擴充套件。介面的出現降低耦合性。介面可以用來多實現。類與介面之間是實現關係,而且類可以繼承乙個類的同時實現多個介面。介面與介面之間可以有繼承關係。類實現介面的...

C 基礎知識整理 基礎知識(9) 介面的應用

前面接觸過介面的概念,其實介面就是一組方法 屬性,然後誰繼承了它,誰就要實現這組方法和屬性。也就是說這個類具備了這個介面定義的一些能力。介面的這種特性在平常的程式編寫中是有很大作用的,往往完成乙個大專案需要很多人同時完成,這樣難免會有一些類都需要某些方法,而且執行流程都差不多。這是在專案設計階段就有...

typescript基礎知識(四)介面

在我的理解中,介面是用於對一系列方法 屬性定義一些標準化的內容,在typescript中體現為對型別的標準化,使用inte ce關鍵字來定義乙個介面 屬性介面針對於物件的屬性標準化 inte ce information function person info information void,a...