淺談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)起來。對java來說,綁定分為靜態(tài)綁定和動(dòng)態(tài)綁定;或者叫做前期綁定和后期綁定。
靜態(tài)綁定:
在程序執(zhí)行前方法已經(jīng)被綁定,此時(shí)由編譯器或其它連接程序?qū)崿F(xiàn)。例如:C。
針對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ù)具體對象的類型進(jìn)行綁定。
若一種語言實(shí)現(xiàn)了后期綁定,同時(shí)必須提供一些機(jī)制,可在運(yùn)行期間判斷對象的類型,并分別調(diào)用適當(dāng)?shù)姆椒āR簿褪钦f,編譯器此時(shí)依然不知道對象的類型,但方法調(diào)用機(jī)制能自己去調(diào)查,找到正確的方法主體。不同的語言對后期綁定的實(shí)現(xiàn)方法是有所區(qū)別的。但我們至少可以這樣認(rèn)為:它們都要在對象中安插某些特殊類型的信息。
方法重載有靜態(tài)方法重載和普通方法重載。靜態(tài)方法重載是靜態(tài)綁定,方法調(diào)用是通過:類名.方法。普通方法重載是動(dòng)態(tài)綁定,方法調(diào)用是通過:實(shí)例對象引用.方法。構(gòu)造器能夠重載,但是不能夠被重寫。
靜態(tài)方法能夠被重寫,但是沒有實(shí)現(xiàn)多態(tài)效果。
總結(jié)
以上就是本文關(guān)于淺談Java中的重載,重寫,多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
Spring?使用注解存儲(chǔ)和讀取?Bean對象操作方法
在?Spring?中,要想更加簡單的實(shí)現(xiàn)對?Bean?對象的儲(chǔ)存和使用,其核心就是使用?注解?,本文主要就是演示如何使用注解實(shí)現(xiàn)對?Bean?對象的存取操作,感興趣的朋友跟隨小編一起看看吧2023-08-08
SpringBoot使用@Validated處理校驗(yàn)的方法步驟
@Validated?注解的主要目的是啟用和利用?Spring?的驗(yàn)證框架,它可以用于類上也可以用于方法參數(shù)上,本文給大家介紹了SpringBoot使用@Validated優(yōu)雅的處理校驗(yàn)的方法步驟,通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
IDEA下Servlet可能出現(xiàn)404的一些情況
相信有很多小伙伴遇到報(bào)錯(cuò)都不知道怎么處理,今天特地整理了這篇文章,文中對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-07
Java List接口與Iterator接口及foreach循環(huán)使用解析
這篇文章主要介紹了Java List接口與Iterator接口及foreach循環(huán),主要包括List接口與Iterator接口及foreach循環(huán)具體的使用方法和代碼,需要的朋友可以參考下2022-04-04
String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法
今天小編就為大家分享一篇String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
springboot封裝JsonUtil,CookieUtil工具類代碼實(shí)例
這篇文章主要介紹了springboot封裝JsonUtil,CookieUtil工具類過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
java實(shí)現(xiàn)合并兩個(gè)已經(jīng)排序的列表實(shí)例代碼
這篇文章主要介紹了java實(shí)現(xiàn)合并兩個(gè)已經(jīng)排序的列表實(shí)例代碼,有需要的朋友可以參考一下2013-12-12

