虚函数与纯虚函数
c++
虛函數(shù)
虛函數(shù)的作用是實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,也就是在程序的運(yùn)行階段動(dòng)態(tài)地選擇合適的成員函數(shù),在定義了虛函數(shù)后,可以在基類的派生類中對(duì)虛函數(shù)重新定義,在派生類中重新定義的函數(shù)應(yīng)與虛函數(shù)具有相同的形參個(gè)數(shù)和形參類型(也就是完全相同的方法,不能只是函數(shù)名相同。)。以實(shí)現(xiàn)統(tǒng)一的接口,不同的定義過(guò)程。如果在派生類中沒(méi)有對(duì)虛函數(shù)重新定義,則它繼承其基類的虛函數(shù)。
當(dāng)程序發(fā)現(xiàn)虛函數(shù)名前的關(guān)鍵字virtual后,會(huì)自動(dòng)將其作為動(dòng)態(tài)聯(lián)編處理,即在程序運(yùn)行時(shí)動(dòng)態(tài)地選擇合適的成員函數(shù)。虛函數(shù)是C++多態(tài)的一種表現(xiàn)。動(dòng)態(tài)聯(lián)編規(guī)定,只能通過(guò)指向基類的指針或基類對(duì)象的引用來(lái)調(diào)用虛函數(shù),其格式:總結(jié):如果一個(gè)子類想要重寫(xiě)父類的方法,那么父類的這個(gè)成員方法必須是virtual的,也就是這個(gè)方法必須是虛函數(shù)。
java
在java中,所有方法默認(rèn)就是虛擬的,只要方法不是聲明為final類型的,那么肯定就是虛函數(shù),不用為方法顯示聲明為virtual。在<core java2 :volum I>中提到:"In Java, you do not need to declare a method as virtual. Dynamic binding is the default behavior. If you do not want a method to be virtual, you tag it as final"。所以我們發(fā)現(xiàn),在java中,子類可以重寫(xiě)(override)父類的方法,而父類沒(méi)有聲明virtual。
?
?本文轉(zhuǎn)自xwdreamer博客園博客,原文鏈接:http://www.cnblogs.com/xwdreamer/archive/2012/04/12/2444221.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
- 上一篇: jQuery |添加标签元素/内容
- 下一篇: viewport,html,body在p