1.super代表父類?代表父類的對象?還是代表父類的引用?為什么super()在構(gòu)造方法,super.fun()在方法能用?個人認(rèn)為應(yīng)該是super表示對象才能這么調(diào)用,可父類對象沒被new 而如果是表示父類的話,那fun()應(yīng)該是static方法啊?迷茫~有些東西可以稱為定義,不要鉆牛角尖 super();表示調(diào)用父類的構(gòu)造方法,只是調(diào)用方法,不構(gòu)造對象.super.fun();表示調(diào)用父類的某方法 在繼承的時候這個方法是肯定被繼承下來的.如果fun()這個方法在子類沒有重寫,那么super.fun();實際上跟直接調(diào)用fun();是一樣的.如果被重寫了,那么super.fun();就是重寫前的,fun();就是重寫后的.不知道這么說理解了沒
2,java里在了類中用super調(diào)用父類構(gòu)造函數(shù)時,為什么調(diào)用語句必須是子類的第一條語句啊?如果你想用super繼承父類構(gòu)造的方法 但是沒有放在第一行的話 那么在super之前的語句 肯定是為了滿足你自己想要完成某些行為的語句 但是你又用了super繼承父類的構(gòu)造方法 那么以前所做的修改就都回到以前了 也就是說又成了父類的構(gòu)造方法了 比如 class Father { public Father() {String int age=0;} } class Son extends Father { public Son() {String ; super();} } //這樣子的話就會把Son里面的name又變成了null 沒有達(dá)到你想要的效果 不知道明白沒有 累死我了 3,java中的super()是什么?要說super就先要說this."this",作為一個特殊的關(guān)鍵字,它的規(guī)則如下:
1.可以表示構(gòu)造函數(shù)傳遞.this(a,b)表示調(diào)用另外一個構(gòu)造函數(shù).這里面的this就是一個特殊語法,不是變量,沒有什么類型.
2.可以在一個類的非static成員內(nèi)部使用,表示當(dāng)前這個對象.此時,this就是一個final的普通變量,它有靜態(tài)類型,就是這個類C本身;它有動態(tài)類型,就是當(dāng)前這個對象的類型.你可以對它調(diào)用成員函數(shù),把它傳遞給別的函數(shù),等等等等.只要一個C類型的final變量可以出現(xiàn)的地方,它就可以出現(xiàn)."super".它和"this"類似,但是也有不同的地方.
1.表示調(diào)用父類的構(gòu)造函數(shù).也是一個特殊語法,不是變量,沒有什么類型.
2.可以在一個類的非static成員內(nèi)部使用.比如super.method().但是,注意,這個super.method()只是長得跟some_var.method()一樣,一個語法糖而已.實質(zhì)上,"super"根本不是一個變量.為什么不是?因為如果是就壞了.java里面有一個金科玉律:任何public非static函數(shù)的調(diào)用都是多態(tài)的.所以,如果super是個變量,也指向當(dāng)前對象,那么,不管super的靜態(tài)類型是什么super.method()必然調(diào)用的是子類的那個版本,而不會是我們期望的,靜態(tài)地選擇父類的那個版本.所以,你只要把super.xxx看成一個特殊的語法,比如理解為“super::xxx”就好了.既然super不是一個變量,那么不能把它象一個普通變量那樣"==",或者傳遞給某個函數(shù)就看起來很正常了,是么?何況,你其實也用不著它,有this你這些要求就都可以辦到了.
3.super的另外一個作用是調(diào)用父類的protected函數(shù).只有通過"super"這個魔咒,我們才能操作父類的protected成員,別無它法.
關(guān)鍵字super、this有哪幾種用法,各表示什么?
關(guān)鍵字super、this有哪幾種用法,各表示什么?
.
.
其他人氣:382 ℃時間:2019-11-10 09:31:17
優(yōu)質(zhì)解答
我來回答
類似推薦
- 舉幾個例子說明C#中的this關(guān)鍵字的用法
- 草字頭+佳 是什么字
- empty what is full,fill what is empty! 永遠(yuǎn)不讓自己空虛,永遠(yuǎn)不讓自己自滿 給點點評
- 16S rRNA基因通用引物1492r/F27,1492和27分別是什么意思?編號么?
- 用短除法分解素因素:42 81 40
- 在長1.6米,寬1.2米的長方形三合板上,裁出半徑是20厘米的圓,最多可裁多少個?
- 線性代數(shù) 設(shè)A,B,C均為n階矩陣,I為n階單位矩陣,且ABC=I,則下列矩陣乘積一定等于I的是哪個?
- 試以下面的方程為例,敘述用分離變量法求解方程的步驟.
- 《父親學(xué)畫》閱讀答案
- engage與undertake的區(qū)別,各自的用法
- how are you doing 同義句 how ________everything______________?
- 簡單的英語首字母填空
猜你喜歡
- 1每天堅持朗讀對學(xué)外語有什么好處?
- 2You are yuji?急.
- 3思密達(dá)到底是什么意思
- 4計算(a的立方-b的立方)+ab(a-3b)-2(b的立方-a的平方b)
- 5求寫英語書面表達(dá)
- 6油酸的作用是什么
- 7請幫忙翻譯:Payment and and Charging
- 8近紅外區(qū)的吸收光譜代表什么含義?
- 9大正方形邊長為15cm,小正方形邊長為10cm.求陰影甲的面積比陰影乙的面積大多少平
- 10有甲乙丙三種文具,若購甲2件,乙1件、丙3件共需23元,若夠甲1件、乙4件、丙5件共需36元,問夠甲一件,乙2件,丙3件共需多少元
- 11Jack has a dog and so have I.____dog and____had a fight
- 12英語翻譯