淺談Java中的重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定
本文主要研究的是關(guān)于Java中重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定的相關(guān)內(nèi)容,具體如下。
重載,英文名是overload,是指在一個(gè)類中定義了一個(gè)以上具有相同名稱的方法,這些方法的參數(shù)個(gè)數(shù)、參數(shù)類型和順序不能相同。返回類型可以相同,也可以不同。
public class TstaticOverload { static int height; TstaticOverload() { System.out.println ("Planting a seedling"); height = 0; } TstaticOverload(int initialHeight) { height = initialHeight; System.out.println("Creating new Tree that is "+ height + " feet tall"); } static void info() { System.out.println("Tree is " + height + " feet tall"); } static void info(String s) { System.out.println(s + ": Tree is " + height + " feet tall"); } }
public class testSO { public static void main (String [] args) { TstaticOverload t = new TstaticOverload(5); TstaticOverload.info(); TstaticOverload.info("overloading method"); new TstaticOverload(); } }
out: Creating new Tree that is 5 feet tall Tree is 5 feet tall overloading method: Tree is 5 feet tall Planting a seedling
重寫,英文名是override,是指在繼承情況下,子類中定義了與其基類中方法具有相同名稱、相同返回類型或兼容類型和相同參數(shù)的方法,就叫做子類把基類的方法重寫了。這是實(shí)現(xiàn)多態(tài)必須的步驟。
多態(tài):多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。
public class StaticSupper { public static String staticGet() { return "Base staticGet()"; } public String dynamicGet() { return "Base dynamicGet()"; } } class StaticSub extends StaticSupper { public static String staticGet() { return "Sub staticGet()"; } public String dynamicGet() { return "Sub dynamicGet()"; } } class StaticMub extends StaticSupper { public static String staticGet() { return "Mub staticGet()"; } public String dynamicGet() { return "Mub dynamicGet()"; } }
public class StaticPolymorphism { public static void main (String [] args) { StaticSupper sup1 = new StaticSub(); System.out.println(sup1.staticGet()); System.out.println(sup1.dynamicGet()); StaticSupper sup2 = new StaticMub(); System.out.println(sup2.staticGet()); System.out.println(sup2.dynamicGet()); } }
out: Base staticGet() Sub dynamicGet() Base staticGet() Mub dynamicGet()
程序綁定的概念:
綁定指的是一個(gè)方法的調(diào)用與方法所在的類(方法主體)關(guān)聯(lián)起來。對(duì)java來說,綁定分為靜態(tài)綁定和動(dòng)態(tài)綁定;或者叫做前期綁定和后期綁定。
靜態(tài)綁定:
在程序執(zhí)行前方法已經(jīng)被綁定,此時(shí)由編譯器或其它連接程序?qū)崿F(xiàn)。例如:C。
針對(duì)Java簡單的可以理解為程序編譯期的綁定;這里特別說明一點(diǎn),java當(dāng)中的方法只有final,static,private和構(gòu)造方法是前期綁定。
動(dòng)態(tài)綁定:
后期綁定:動(dòng)態(tài)綁定是指編譯器在編譯階段不知道要調(diào)用哪個(gè)方法,直到運(yùn)行時(shí)根據(jù)具體對(duì)象的類型進(jìn)行綁定。
若一種語言實(shí)現(xiàn)了后期綁定,同時(shí)必須提供一些機(jī)制,可在運(yùn)行期間判斷對(duì)象的類型,并分別調(diào)用適當(dāng)?shù)姆椒āR簿褪钦f,編譯器此時(shí)依然不知道對(duì)象的類型,但方法調(diào)用機(jī)制能自己去調(diào)查,找到正確的方法主體。不同的語言對(duì)后期綁定的實(shí)現(xiàn)方法是有所區(qū)別的。但我們至少可以這樣認(rèn)為:它們都要在對(duì)象中安插某些特殊類型的信息。
方法重載有靜態(tài)方法重載和普通方法重載。靜態(tài)方法重載是靜態(tài)綁定,方法調(diào)用是通過:類名.方法。普通方法重載是動(dòng)態(tài)綁定,方法調(diào)用是通過:實(shí)例對(duì)象引用.方法。構(gòu)造器能夠重載,但是不能夠被重寫。
靜態(tài)方法能夠被重寫,但是沒有實(shí)現(xiàn)多態(tài)效果。
總結(jié)
以上就是本文關(guān)于淺談Java中的重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Spring?使用注解存儲(chǔ)和讀取?Bean對(duì)象操作方法
在?Spring?中,要想更加簡單的實(shí)現(xiàn)對(duì)?Bean?對(duì)象的儲(chǔ)存和使用,其核心就是使用?注解?,本文主要就是演示如何使用注解實(shí)現(xiàn)對(duì)?Bean?對(duì)象的存取操作,感興趣的朋友跟隨小編一起看看吧2023-08-08SpringBoot使用@Validated處理校驗(yàn)的方法步驟
@Validated?注解的主要目的是啟用和利用?Spring?的驗(yàn)證框架,它可以用于類上也可以用于方法參數(shù)上,本文給大家介紹了SpringBoot使用@Validated優(yōu)雅的處理校驗(yàn)的方法步驟,通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08IDEA下Servlet可能出現(xiàn)404的一些情況
相信有很多小伙伴遇到報(bào)錯(cuò)都不知道怎么處理,今天特地整理了這篇文章,文中對(duì)IDEA下Servlet可能出現(xiàn)404的一些情況作了詳細(xì)的介紹,需要的朋友可以參考下2021-06-06深入理解Java中的并發(fā)工具類CountDownLatch
CountDownLatch?作為?Java?中的一個(gè)同步工具類,用于在多線程間實(shí)現(xiàn)協(xié)調(diào)和控制,本文主要來和大家講解一下JUC?工具類?CountDownLatch的使用,需要的可以參考一下2023-07-07Java List接口與Iterator接口及foreach循環(huán)使用解析
這篇文章主要介紹了Java List接口與Iterator接口及foreach循環(huán),主要包括List接口與Iterator接口及foreach循環(huán)具體的使用方法和代碼,需要的朋友可以參考下2022-04-04String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法
今天小編就為大家分享一篇String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07springboot封裝JsonUtil,CookieUtil工具類代碼實(shí)例
這篇文章主要介紹了springboot封裝JsonUtil,CookieUtil工具類過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09java實(shí)現(xiàn)合并兩個(gè)已經(jīng)排序的列表實(shí)例代碼
這篇文章主要介紹了java實(shí)現(xiàn)合并兩個(gè)已經(jīng)排序的列表實(shí)例代碼,有需要的朋友可以參考一下2013-12-12