java虚方法和抽象方法_虚方法和抽象方法--基础回顾
抽象方法是只有定義、沒(méi)有實(shí)際方法體的函數(shù),它只能在抽象函數(shù)中出現(xiàn),并且在子類中必須重寫;虛方法則有自己的函數(shù)體,已經(jīng)提供了函數(shù)實(shí)現(xiàn),但是允許在子類中重寫或覆蓋。
重寫的子類虛函數(shù)就是被覆蓋了。
抽象方法
使用abstract關(guān)鍵字 public abstract bool Withdraw(…);
抽象方法是必須被派生類覆寫的方法。
抽象方法是可以看成是沒(méi)有實(shí)現(xiàn)體的虛方法
如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其它一般方法
虛方法
使用virtual關(guān)鍵字 public virtual bool Withdraw(…);
調(diào)用虛方法,運(yùn)行時(shí)將確定調(diào)用對(duì)象是什么類的實(shí)例,并調(diào)用適當(dāng)?shù)母矊懙姆椒ā?/p>
虛方法可以有實(shí)現(xiàn)體 若一個(gè)實(shí)例方法的聲明中含有 virtual 修飾符,則稱該方法為虛擬方法;
一個(gè)虛擬方法的實(shí)現(xiàn)可以由派生類取代。取代所繼承的虛擬方法的實(shí)現(xiàn)的過(guò)程稱為重寫該方法;在一個(gè)虛擬方法調(diào)用中,該調(diào)用所涉及的那個(gè)實(shí)例的運(yùn)行時(shí)類型確定了要被調(diào)用的究竟是該方法的哪一個(gè)實(shí)現(xiàn)。
虛函數(shù)的限制:
1.虛函數(shù)僅適用于有繼承關(guān)系的類對(duì)象, 所以只有類的成員函數(shù)才能說(shuō)明為虛函數(shù).
2.靜態(tài)成員函數(shù)不能是虛函數(shù).
3.內(nèi)聯(lián)函數(shù)不能是虛函數(shù).
4構(gòu)造函數(shù)不能是虛函數(shù).
5.析構(gòu)函數(shù)可以是虛函數(shù). 簡(jiǎn)單點(diǎn)說(shuō),抽象方法是需要子類去實(shí)現(xiàn)的.虛方法,是已經(jīng)實(shí)現(xiàn)了,子類可以去覆蓋,也可以不覆蓋取決于需求.
簡(jiǎn)單點(diǎn)說(shuō),抽象方法是需要子類去實(shí)現(xiàn)的.虛方法,是已經(jīng)實(shí)現(xiàn)了,子類可以去覆蓋,也可以不覆蓋取決于需求.
虛方法和抽象方法都可以供派生類重寫,它們之間有什么區(qū)別呢?
1. 虛方法必須有實(shí)現(xiàn)部分,抽象方法沒(méi)有提供實(shí)現(xiàn)部分,抽象方法是一種強(qiáng)制派生類覆蓋的方法,否則派生類將不能被實(shí)例化。
2. 抽象方法只能在抽象類中聲明,虛方法不是。其實(shí)如果類包含抽象方法,那么該類也是抽象的,也必須聲明為抽象的。
3. 抽象方法必須在派生類中重寫,這一點(diǎn)跟接口類似,虛方法不必。
總結(jié)
以上是生活随笔為你收集整理的java虚方法和抽象方法_虚方法和抽象方法--基础回顾的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android中微信抢红包插件原理解析和
- 下一篇: google hacking搜索语法总结