1樓:匿名使用者
樓上說的基本正確,但是對初學者來說是有誤導的。
虛擬方法是標記為virtual,虛擬方法可以在子類/派生類中override(有的叫重寫,有的叫過載)。
抽象方法標記為abstract,抽象方法沒有方法體,抽象方法必須在子類/派生類中override(有的叫重寫,有的叫過載)。
通俗的說就是普通方法告訴子類怎麼做。虛擬方法告訴子類,這麼做,如果你不滿意,也可以那麼做。而抽象方法是,怎麼做我不管,反正你一定要去做。
而包含抽象方法的類必須標記為抽象類。直到它被繼承並實現。所以你也不能把抽象類標記為sealed。
介面就不必標記為抽象類,介面內的方法也不必標記為抽象。因為他們全都是抽象的。
2樓:
抽象類就是這個類只是一個抽像的定義沒有寫具體實現,抽像類中的成員是一定要重寫的。
虛擬方法呢可以寫實現也可以不寫,當然可以重寫也可以不重寫
你是初學者不知道你是否理解什麼是重寫不?建議你呢還是認真看一些基礎的書吧。
C的抽象類中,抽象方法和純虛擬函式區別
問題1 含有virtual修飾符的方法稱為虛擬方法。不能像你說的那樣定義。問題2 1 虛擬方專法,子屬類可以選擇性重寫此方法,也可以不重寫 而抽象 abstract 方法,子類必須重寫。2 虛擬方法可以有實體,如 public virtual void vt 所以,可以直接呼叫虛擬方法 而抽象方法不...
抽象類請編寫抽象類shape,在此基礎上派生出類rect
include define pi 3.1415926 using namespace std class shape 抽象類bai的 定義 class rectangle public shape 矩形類,公有內繼承 public rectangle double aa,double bb 帶引數...
虛基類與抽象類的問題,純虛類 和抽象類 有什麼關係
當繼承關係自頂來至自 下出現菱形路線時,bai最底層的派生類必然du會重複繼承最頂zhi層基類的成dao員,所以定義虛基類是為了解決這種重複繼承的問題。抽象類是包含純虛擬函式的類,它不能定義物件,在類中定義虛擬函式是為了解決基類的指標能夠呼叫派生類的函式也就是所謂的 多型性 讓一個命令實現多種響應。...