在Java中,只要是被定義為final的類,也可以說是被final修飾的類,就是不能被繼承的。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的江蘇網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
因?yàn)閖dk的開發(fā)者認(rèn)為,有一些最基本的類沒要必要對開發(fā)者開放,如果用戶繼承時操作有誤,很可能引入很多問題。為了防止用戶對基本類進(jìn)行相應(yīng)的擴(kuò)展,也體現(xiàn)了java設(shè)計(jì)過程中的開閉原則,最終將這些類設(shè)計(jì)成為final的。
這是final的規(guī)定:
當(dāng)你將final用于類身上時,一個final類是無法被任何人繼承的,那也就意味著此類在一個繼承樹中是一個葉子類,并且此類的設(shè)計(jì)已被認(rèn)為很完美而不需要
進(jìn)行修改或擴(kuò)展。對于final類中的成員,你可以定義其為final,也可以不是final。而對于方法,由于所屬類為final的關(guān)系,自然也就成了final型的。你也可以明確的給final
類中的方法加上一個final,但這顯然沒有意義。
java中常見的不能被繼承的類有如下:
String,
StringBuffer,
StringBuilder,
基本類型的包裝類如Double,Integer,Long
等等。
我們來看看這個String類是如何被定義的:
以上就是這個String類的定義方式,我們可以明顯的看到一個final修飾符!
如果說整個類都是final(在它的定義前冠以final關(guān)鍵字),就表明自己不希望從這個類繼承,或者不允許其他任何人采取這種操作。換言之,出于這樣或那樣的原因,我們的類肯定不需要進(jìn)行任何改變;或者出于安全方面的理由,我們不希望進(jìn)行子類化(子類處理)