日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

super 和 this 关键字的比较+调用构造器(this)+动态绑定

發(fā)布時間:2023/12/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 super 和 this 关键字的比较+调用构造器(this)+动态绑定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【0】README

0.1) 本文描述+源代碼均 轉自 core java volume 1, 旨在加深對 super 和 this關鍵字 的用法比較;
0.2) 最后還補充了 多態(tài)和動態(tài)綁定 的定義 以及對動態(tài)綁定進行了詳細分析,這兩個定義給的非常棒;


【1】super 和 this 的比較:

1.1) 有人認為super 和 this 引用是類似的概念,實際上,這樣比較并不太恰當;因為super不是一個對象引用, 不能將super 賦給另一個對象變量,它只是一個編譯器調用超類方法的特殊關鍵字;
1.2)我們再看super在構造器中的應用:

public Manager(String n, double s, int year, int month, int day) { super(n, s, year, month, day); bonus = 0; }
  • 這里的super含義是: super(n, s, year, month, day) 是“調用超類Employee中含有 n、s、year、month 和 day” 參數的構造器的簡寫形式;
  • 這是由于: Manager類的構造器不能訪問 Employee類 的私有域, 所以必須利用 Employee類的構造器對這部分私有域 進行初始化;

Attention)

  • A1)而且 使用 super調用構造器的語句必須是 子類構造器的第一條語句;
  • A2)如果子類的構造器沒有顯式地 調用超類的構造器,則將自動地調用超類默認構造器;

Annotation)關鍵字this + super 有兩個用途:

  • A1)this的用途:一是引用隱式參數+二是調用該類其它的構造器;
  • A2)super的用途:一是調用超類 的方法 + 而是調用超類都構造器;

【2】調用構造器

2.1)調用構造器的注意事項 : 調用構造器的語句只能作為 另一個構造器的第一條語句出現, 構造參數既可以傳遞給本類的其他構造器, 也可以傳遞給超類的構造器;

2.2)看個荔枝(利用this調用其他構造器):


2.3)Complementary

  • C1)多態(tài): 一個對象變量可以指示多種實際類型的現象 被稱為多態(tài);(如上述代碼中的 e 即可以指向 Manager類 也可以指向 Employee類)
  • C2)動態(tài)綁定:在運行時能夠自動地選擇調用哪個方法的現象稱為動態(tài)綁定

【3】 動態(tài)綁定

3.1)定義: 在運行時能夠自動地選擇調用哪個方法的現象稱為 動態(tài)綁定
如:

Manager boss = new Manager("tangrong", 80000, 1987, 12, 15): staff[0] = boss; staff[1] = new Employee("tangtang", 1, 2, 3, 4); staff[2] = new Employee("rongrong", 4, 3, 2, 1); for(Employee e: staff) System.out.println(e.getName() + " " + e.getSalary() );
  • e.getSalary() 調用能夠確定應該執(zhí)行哪個 getSalary 方法, 請注意, 這里雖然將e 聲明為 Employee 類型,但實際上 e 既可以引用Employee 類型的對象,也可以引用Manager 類型的對象;

3.2)看一下對象方法的執(zhí)行過程,調用過程的詳細描述(Description):

  • D1)編譯器查看對象的聲明類型和方法名:例如可能存在方法 f(int) 和 方法 f(String), 編譯器將會一一列舉所有C類中名為f的方法和其超類中訪問屬性為public 且名
    為f的方法;
  • D2)編譯器將查看調用方法時提供的參數類型:
    重載解析:如果在所有名為f 的方法中存在一個與提供的參數類型完全匹配, 就選擇這個方法,這個過程叫做重載解析;
  • D3)如果是private、static、final 方法或者構造器, 那么編譯器將可以正確地知道應該調用哪個方法;我們將這種調用方式叫做靜態(tài)綁定;與此對應的是,調用的方法依賴于隱式參數的實際
    類型,并且在運行時實現動態(tài)綁定;
  • D4)當程序運行, 并且采用動態(tài)綁定調用方法時, 虛擬機一定調用與x 所引用對象的實際類型最合適的那個類的方法;假設x 的實際類型為D, 它是C類的子類, 如果 D類定義了 方法f(string), 就直接調用它,否則將在D類的超類中尋找f(string), 以此類推;

3.3)方法表:每次調用方法都要進行搜索, 時間開銷相當大, 因此虛擬機預先為每個類創(chuàng)建了一個方法表(method table), 其中列出了所有方法的簽名和實際調用 的方法;
Annotation)

  • A1)方法簽名:方法的名字和參數列表稱為方法的簽名; 如,f(int) 和 f(String) 是兩個具有相同名字、不同簽名的方法;如果在子類中定義了一個與超類簽名相同的方法,那么子類中的這個方法就覆蓋了超類中的這個相同簽名的方法;
  • A2)返回類型不是方法簽名的一部分:因此,在覆蓋方法時, 一定要保證返回類型的兼容性;允許子類將覆蓋方法的返回類型定義為原返回類型的子類型;
    如父類有: public Employee getBuddy(){}, 子類可以覆蓋它, public Manager getBuddy(){} ;我們說,這兩個 getBuddy 方法具有 可協(xié)變的返回類型

3.4)在運行的時候, 調用 e.getSalary() 的解析過程(Procedure):

  • P1)首先,虛擬機提取e 的實際類型的方法表: 既可能是Employee、Manager的方法表,也可能是 Employee 類的其他子類的方法表;
  • P2)接下來, 虛擬機搜索定義 getSalary 簽名的類, 此時,虛擬機已經知道應該調用哪個方法;
  • P3)最后,虛擬機調用方法;

3.5)動態(tài)綁定有一個重要的特性:無需對現在的代碼進行修改, 就可以對程序進行擴展。
Alert)在覆蓋一個方法的時候, 子類方法不能低于超類方法的可見性;特別是, 如果超類方法是public, 子類方法一定要聲明為public;

總結

以上是生活随笔為你收集整理的super 和 this 关键字的比较+调用构造器(this)+动态绑定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱了高清露脸对白 | 精久久久久久 | 欧美激情视频一区二区 | 性激烈视频在线观看 | 91网址入口 | 欧美性猛交7777777 | 91蝌蚪视频在线 | 日韩性在线 | 日韩不卡毛片 | 国产在线区| 张津瑜国内精品www在线 | 国产黄色一级 | 成人在线观看国产 | 午夜免费| 国产在线国偷精品免费看 | 涩涩片影院 | 亚州视频在线 | 亚洲播放| 中文字幕免费一区 | www.操| jizz中国女人高潮 | 国产午夜精品一区二区三区四区 | 亚洲综合久久婷婷 | 国产精品久久久久久久久久久久久久 | 国产视频在线观看一区二区 | 国产成人无码精品久久久性色 | 毛片无码一区二区三区a片视频 | 久久久香蕉网 | 人妻妺妺窝人体色www聚色窝 | 亚洲干综合| 国产1区2区3区中文字幕 | 又爽又黄视频 | 国产精品久久久久久久成人午夜 | av网站有哪些 | 国产极品美女在线 | 国产男人的天堂 | 精品国产无码在线观看 | 激情小说av| 成人精品一区二区三区四区 | 老牛影视av老牛影视av | 色情毛片 | 影音先锋制服丝袜 | 白丝校花扒腿让我c | 在线观看亚洲一区 | 特级西西444www大精品视频免费看 | 中文字幕免费一区二区 | 日本少妇裸体做爰 | 精品国产999| 可以免费在线观看的av | 岛国视频一区 | 91视频在线免费 | 91看片看淫黄大片 | 久久性| 91亚洲成人 | 欧美日韩综合一区二区三区 | 国内精品视频一区二区三区 | 日韩精品字幕 | 亚洲色图36p| 2022天天操 | 久久久精品网 | 日本韩国欧美中文字幕 | 菊肠扩张playh | 两个小y头稚嫩紧窄h文 | 日爽夜爽 | 亚洲色成人一区二区三区小说 | 国产粉嫩在线观看 | 国产精品日本一区二区在线播放 | 中文字幕有码在线播放 | www.日本黄色| 日韩精品一区二区免费视频 | 野花视频在线观看免费 | 天堂在线网 | 国产调教视频 | 中出av在线| 星空大象在线观看免费播放 | 天天操天天射天天 | 国产精品一区二区亚洲 | 欧美人与性动交g欧美精器 国产在线视频91 | 午夜噜噜 | 一本色道久久hezyo加勒比 | 五月婷婷综合在线 | 国产原创在线 | 天天碰免费视频 | 偷拍亚洲欧美 | 99视频久 | 蜜桃成人av | 强行挺进白丝老师翘臀网站 | 色女人天堂 | 天堂网avav| 午夜视频在线观看一区二区 | 青青操免费 | 天天干夜夜操 | 日韩激情毛片 | 日本一区二区在线免费观看 | 日本高清网色 | 中文字幕一区二区在线观看视频 | 苍井空亚洲精品aa片在线播放 | 97超视频 | 97视频在线观看免费 |