介面和抽象類

2022-09-17 16:48:26 字數 2365 閱讀 5612

介面

1.介面是乙個用來定義程式的協議,它描述可屬於任何類或結構的一組相關行為。介面可由方法、屬性、事件和索引器或這4種成員型別的任何組合構成,但不能包含字段。

介面具有以下特徵:

a).介面類似於抽象基類:繼承介面的任何非抽象型別都必須實現介面的所有成員。

b).不能直接例項化介面。

c).介面可以包含事件、索引器、方法和屬性。

d).介面不包含方法的實現。

e).類和結構可從多個介面繼承。

f).介面自身可從多個介面繼承。

修飾符 inte***ce 介面名稱 : 繼承的介面列表

說明:a).宣告介面時,除inte***ce關鍵字和介面名稱外,其他的都是可選項。

b).可以使用new、public、protected、internal和private等修飾符宣告介面,但介面成員必須是公共的。

2.介面的實現與繼承

inte***ce ipeople

}calss program : ipeople

set}

}ipeople ipeople = new program();

ipeople.name = 「tom」;

3.顯式介面成員實現

inte***ce imyinte***ce1

inte***ce imyinte***ce2

calss myclass: imyinte***ce1, imyinte***ce2

int imyinte***ce2.add()

}myclass myclass = new myclass();

imyinte***ce1 imyinte***ce1 = myclass;

console.writeline(imyinte***ce1.add());

注:a).顯式介面成員實現中不能包含訪問修飾符、abstract、virtual、override或static修飾符。

b).顯式介面成員屬於介面的成員,而不是類的成員,因此,不能使用類物件直接訪問,只能通過介面物件來訪問。

抽象類與抽象方法

1.抽象類主要用來提供多個派生類可共享的基類的公共定義,它與非抽象類的主要區別:

a).抽象類不能直接例項化。

b).抽象類中可以包含抽象成員,但非抽象類中不可以。

c).抽象類不能被密封。

訪問修飾符 abstract class 類名:基類或介面

說明:宣告抽象類時,除abstract關鍵字、class關鍵字和類名外,其他的都是可選項。

2.抽象方法概述及宣告

抽象方法就是在宣告方法時,加上abstract關鍵字,宣告抽象方法時需要注意以下兩點:

a).抽象方法必須宣告在抽象類中。

b).宣告抽象方法時,不能使用virtual、static和private修飾符。

public abstract class myclass

3.抽象類與介面

抽象類和介面的區別主要有以下幾點:

a).它們的派生類只能繼承乙個基類,即只能直接繼承乙個抽象類,但可以繼承任意多個介面。

b).抽象類中可以定義成員的實現,但介面中不可以。

c).抽象類中可以包含字段、建構函式、析構函式、靜態成員或常量等,介面中不可以。

d).抽象類中的成員可以是私有的(只要它們不是抽象的)、受保護的、內部的或受保護的內部成員,但介面中的成員必須是公共的。

注:抽象類和介面這兩種型別用於完全不同的目的。抽象類主要用作物件系列的基類,共享某些主要特性,例如共同的目的和結構。介面則主要用於類,這些類在基礎水平上有所不同,但仍可以完成某些相同的任務。

密封類與密封方法

1.c#中使用密封類時,如果類滿足如下條件,則應將其密封:

a).類是靜態類。

b).類包含帶有安全敏感資訊的繼承的受保護成員。

c).類繼承多個虛成員,並且密封每個成員的開發和測試開銷明顯大於密封整個類。

d).類是乙個要求使用反射進行快速搜尋的屬性。密封屬性可提高反射在檢索屬性時的效能。

訪問修飾符 sealed class 類名:基類或介面

說明:a).密封類不能作為基類被繼承,但它可以繼承別的類或介面。

b).在密封類中不能宣告受保護成員或虛成員,因為受保護成員只能從派生類進行訪問,而虛成員只能在派生類中重寫。

c).由於密封類的不可繼承性,因此密封類不能宣告為抽象的,即sealed修飾符不能與abstract修飾符同時使用。

《c#從入門到精通》讀後總結

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...