淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解
說點對這幾個容易混淆的詞的理解:
1、c++中的virtual方法的 virtual關(guān)鍵字主要是防止繼承中重復(fù)繼承父類的同一個方法而設(shè)置的標(biāo)識。
2、virtual與abstract關(guān)鍵字的不同之處在于 virtual方法可以有具體的實現(xiàn),當(dāng)子類繼承父類的時候若沒有覆寫該方法,也可以使用父類中的此方法。
但是abstract方法即抽象方法是沒有具體實現(xiàn)的,子類需要自己實現(xiàn)。打個比方就是virtual 虛方法 這個 父親雖然“虛”了點但‘家產(chǎn)'還是有一點的,但老爸是抽象方法這個兒子就悲劇了,什么遺產(chǎn)也沒有,因為他老爸的方法是抽象的,并不是“真”的。。。
另:包含抽象方法的類一定是抽象類,抽象類不一定有抽象方法(但也不能實例化)。
額,另外還有一個純干抽象事兒的 接口。里面只有常量和抽象方法。
3、關(guān)于靜態(tài)方法和靜態(tài)變量
靜態(tài)方法是屬于類的,內(nèi)存必須為它分配內(nèi)存空間,這個空間一直由靜態(tài)方法占用,內(nèi)存管理器不會由于靜態(tài)方法沒有被調(diào)用而將靜態(tài)方法的存儲空間收回,這樣如果將所有的方法都聲明為靜態(tài)方法,就會占用大量的內(nèi)存空間,最后是系統(tǒng)變慢。而普通的成員方法是由對象調(diào)用的,內(nèi)存并不會一直為起分配內(nèi)存,只有調(diào)用的時候才為其分配存儲空間,而當(dāng)其沒有被調(diào)用時,存儲空間就會被內(nèi)存管理其收回,釋放沒有用的空間,提高的系統(tǒng)的運行速率!希望對樓主有幫助!
具體百度, 另: 靜態(tài)方法的典型用法就是單例模式。另外基于靜態(tài)方法的特點,我覺得那些需要被頻繁調(diào)用的方法適合定義成為靜態(tài)方法。此外,還有單例等特殊用途。
靜態(tài)變量:static定義的語句只會被執(zhí)行一次。
以上這篇淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中的@EnableScheduling定時任務(wù)注解
這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用 Spring 的定時任務(wù)功能,通過使用這個注解,可以在 Spring 應(yīng)用程序中創(chuàng)建定時任務(wù),需要的朋友可以參考下2024-01-01MyBatis-Plus條件構(gòu)造器Wrapper應(yīng)用實例
QueryWrapper是用于查詢的Wrapper條件構(gòu)造器,可以通過它來構(gòu)建SELECT語句中的WHERE條件,這篇文章主要介紹了MyBatis-Plus數(shù)據(jù)表操作條件構(gòu)造器Wrapper,需要的朋友可以參考下2023-09-09如何利用Map與函數(shù)式接口來實現(xiàn)去除if else
這篇文章主要介紹了如何利用Map與函數(shù)式接口來實現(xiàn)去除if else問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07IntelliJ IDEA之高效代碼插件RainBow Brackets詳解
這篇文章主要介紹了IntelliJ IDEA之高效代碼插件RainBow Brackets詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Java設(shè)計模式之訪問模式(Visitor者模式)介紹
這篇文章主要介紹了Java設(shè)計模式之訪問模式(Visitor者模式)介紹,本文講解了為何使用Visitor模式、如何使用Visitor模式、使用Visitor模式的前提等內(nèi)容,需要的朋友可以參考下2015-03-03