先說(shuō)區(qū)別: virtual意思是虛擬,abstract意思是抽象。 virtual只修飾方法,abstract修飾方法和類。 virtual方法必須有實(shí)現(xiàn),abstract方法必須沒(méi)有實(shí)現(xiàn)。 public abstract void getword(); //abstract后面直接封號(hào)。 public virtual void getword() { } //virtual必須是大括號(hào),即便沒(méi)內(nèi)容。 virtual方法可以在普通類里,也可以在虛類里,而abstract方法必須在虛類中。(abstract class,虛類只能被繼承,不能實(shí)例化) virtual方法可以被重寫,abstract方法必須被重寫。
共同點(diǎn): 都是為了實(shí)現(xiàn)多態(tài)。 子類重寫的時(shí)候都得加override描述。
感覺(jué)abstract跟接口非常相似。對(duì)于其差別現(xiàn)在的認(rèn)識(shí)是: 1.接口是為了實(shí)現(xiàn)多繼承(多實(shí)現(xiàn))。 2.接口是跟類同級(jí)別的,不是修飾類和方法的。 3.整個(gè)接口中只有類似虛方法的接口方法,不存在公私有域,abstract虛類里面可以有帶實(shí)現(xiàn)的方法。 平時(shí)基本都在用接口,用虛類比較少。 分類: C# / .net |
|
來(lái)自: 昵稱10504424 > 《工作》