父類(lèi)有多個(gè)構(gòu)造函數(shù)如何繼承 為什么構(gòu)造函數(shù)不能是虛函數(shù)?
為什么構(gòu)造函數(shù)不能是虛函數(shù)?構(gòu)造函數(shù)不能聲明為虛函數(shù)的原因是:有所謂虛函數(shù)是多態(tài)情況下只執(zhí)行一個(gè),而從無(wú)法繼承的概念來(lái)講,老是要先構(gòu)造父類(lèi)對(duì)象,然后把才能是子類(lèi)對(duì)象,假如構(gòu)造函數(shù)設(shè)為虛函數(shù),這樣的話等
為什么構(gòu)造函數(shù)不能是虛函數(shù)?
構(gòu)造函數(shù)不能聲明為虛函數(shù)的原因是:有所謂虛函數(shù)是多態(tài)情況下只執(zhí)行一個(gè),而從無(wú)法繼承的概念來(lái)講,老是要先構(gòu)造父類(lèi)對(duì)象,然后把才能是子類(lèi)對(duì)象,假如構(gòu)造函數(shù)設(shè)為虛函數(shù),這樣的話等到你在構(gòu)造父類(lèi)的構(gòu)造函數(shù)時(shí)就只好總是顯示的調(diào)用構(gòu)造,有一個(gè)原因那是是為防錯(cuò),很難想象如果沒(méi)有你在子類(lèi)中再不小心寫(xiě)回了個(gè)跟父類(lèi)構(gòu)造函數(shù)一般的函數(shù),那么你的父類(lèi)的構(gòu)造函數(shù)將被覆蓋,也即不能不能成功父類(lèi)的構(gòu)造.都會(huì)出現(xiàn)錯(cuò)誤.------子類(lèi)可以繼承了父類(lèi)的employee方法以后,其實(shí)這個(gè)可以在public中先添加新的方法和屬性(屬性象放到private也可以protect里面),這是不能繼承的基本都用法哦
一個(gè)父類(lèi)只能被一個(gè)子類(lèi)繼承?
一個(gè)父類(lèi)可以不被多個(gè)子類(lèi)可以繼承,比如:
classperson{}//父類(lèi)
classworkerextendsperson{}//子類(lèi)
classteacherextendsperson{}//子類(lèi)
Java為什么不支持多繼承?
先講講多不能繼承和單不能繼承的區(qū)別。舉個(gè)例子,要是在武俠世界,多繼承那樣的話人們可以加入多個(gè)門(mén)派,學(xué)習(xí)多種武功,集百家之長(zhǎng),風(fēng)險(xiǎn)就是是需要一一確定這些武功是否兼容性,好的例子是郭靖,壞的例子則是鳩摩智;單不能繼承的武俠世界,人們沒(méi)法一并加入一個(gè)門(mén)派,學(xué)習(xí)到這個(gè)門(mén)派的所有武功,缺點(diǎn)是外人很有可能認(rèn)為你只會(huì)本門(mén)武功,就算你練成了更很厲害的,他們也到底。
java從一開(kāi)始就不接受多繼承,通常的原因我還是就是為了漢字拆分語(yǔ)言,避免多無(wú)法繼承給了的復(fù)雜性。而言多接口,多可以繼承機(jī)制中一個(gè)類(lèi)這個(gè)可以不能繼承多個(gè)類(lèi),擁有所有父類(lèi)的功能,是一種更強(qiáng)大無(wú)比的語(yǔ)言特性,可是相對(duì)于編程語(yǔ)言來(lái)講,要想利用多可以繼承,語(yǔ)法、代碼編譯等方面會(huì)非常奇怪,因此java語(yǔ)言甚至提出多接口都能夠滿(mǎn)足的條件需要,隨著時(shí)間,官方也在嘗試修補(bǔ)這個(gè)缺陷,java8中,接口引導(dǎo)出設(shè)置利用,這也向多繼承靠近了一步。不過(guò)java到最后是否會(huì)接受多不能繼承,還要時(shí)間來(lái)見(jiàn)證。