在c#中使用關鍵字 abstract 來定義抽象類和抽象方法。
不能初始化的類被叫做抽象類,它們只提供部分實現,但是另乙個類可以繼承它並且能建立它們
的例項。
"乙個包含乙個或多個純虛函式的類叫抽象類,抽象類不能被例項化,進一步
乙個抽象類只能通過介面和作為其它類的基類使用."- c++ programming language by stroustrup chapter13.2
抽象類能夠被用於類,方法,屬性,索引器和事件,使用abstract 在乙個類宣告中表示該類傾向要作為其它類的基類
成員被標示成abstract,或被包含進乙個抽象類,必須被其派生類實現。
abstract class shapesclass
class square : shapesclass
}例如,乙個包含非抽象方法的抽象類:
abstract class myabs
}class myclass : myabs
class myclient
}乙個抽象類可以包含抽象和非抽象方法,當乙個類繼承於抽象類,那麼這個派生類必須實現所有的
的基類抽象方法。
乙個抽象方法是乙個沒有方法體的方法。
abstract class myabs
public abstract void abmethod(); // an abstract method
}class myclass : myabs//must implement base class abstract methods
}class myclient
}但是通過宣告派生類也為抽象,我們可以避免所有或特定的虛方法的實現,
這就是抽象類的部分實現。
abstract class myabs
//not necessary to implement all abstract methods
//partial implementation is possible
abstract class myclass1 : myabs
}class myclass : myclass1
}class myclient
}在c#中,乙個抽象類能夠繼承另乙個非抽象類,另外,繼承了基類的方法,新增新的
抽象和非抽象方法是可行的。
class myclass1 // non-abstract class
}abstract class myabs : myclass1 // inherits from an non-abstract class
class myclass : myabs//must implement base class abstract methods
}class myclient
}乙個抽象類也能從乙個介面來實現,這種情況,我們必須為所有的方法提供方法體,這些方法是來自介面
inte***ce iinte***ce
abstract class myabs : iinte***ce
}class myclass : myabs//must implement base class abstract method
class myclient
}我們不能把關鍵字abstract 和 sealed 一起用在c#中,因為乙個密封類不能夠被抽象。
abstract class myabs
class myclass1 : myabs
public override void abmethod2()
}class myclient
}抽象方法有以下特徵:
1.乙個抽象方法可以看作是乙個虛函式。
2.抽象方法的宣告只能在抽象類中。
3.因為抽象方法宣告只提供乙個無實現的方式,沒有方法體
4.方法體的實現被覆寫方法提供,覆寫方法是乙個非抽象類的成員。
5.抽象屬性的行為和抽象方法相像,除了不同的宣告形式。
6.在乙個靜態屬性中使用abstract 是乙個錯誤。
*乙個抽象屬性能夠通過派生類使用 override 實現.
對於抽象類:
乙個抽象類必須為所有的介面成員提供實現
乙個用於實現介面的抽象類可能把介面方法安排到抽象方法上。例如
inte***ce i
abstract class c: i
抽象類具有以下特徵:
1.抽象類不能被例項化。
2.抽象類可以包含抽象方法和訪問器
3.不能把抽象類用密封(sealed)來修飾,那就意味著類不能被繼承,這違反抽象類被繼承的原則。
4.乙個派生於乙個抽象類的非抽象類必須包括所有的繼承來的抽象方法和訪問器的實現
5.在方法和屬性中使用abstract 關鍵字意味著包含它們的實現。
未完待續......
摘自 龍泰
C C 抽象類及其方法
一 解釋1 在c 中使用關鍵字 abstract 來定義抽象類和抽象方法。不能初始化的類被叫做抽象類,它們只提供部分實現,但是另乙個類可以繼承它並且能建立它們 的例項。乙個包含乙個或多個純虛函式的類叫抽象類,抽象類不能被例項化,進一步 乙個抽象類只能通過介面和作為其它類的基類使用.c program...
c 學習筆記 抽象類 抽象方法 抽象屬性
抽象類與抽象方法 先說些概念的東西 在乙個類前面加上 abstract 關鍵字,此類就成為了抽象類。對應的,乙個方法類前面加上 abstract 關鍵字,此方法就成為了抽象方法。abstract class fruit 抽象類 注意抽象方法不能有實現 在函式名後直接跟乙個分號。抽象類專用於派生出子類...
抽象類和抽象方法的學習
1 抽象類的特徵 1.抽象類不能例項化,即不能用new來例項化抽象類。2.抽象類中包含有構造方法,但構造方法不能用來new例項,只能用來被子類呼叫。3.抽象類中可以包含成員變數,成員方法,靜態方法,構造方法,final 修飾的方法,抽象方法 4.抽象類只能用來被繼承,不能繼承其他類。2 抽象方法的特...