java的前期綁定和后期綁定使用示例
后期綁定,是指在運(yùn)行時(shí)根據(jù)對(duì)象的類型進(jìn)行綁定,又叫動(dòng)態(tài)綁定或運(yùn)行時(shí)綁定。實(shí)現(xiàn)后期綁定,需要某種機(jī)制支持,以便在運(yùn)行時(shí)能判斷對(duì)象的類型,調(diào)用開(kāi)銷比前期綁定大。
Java中的static方法和final方法屬于前期綁定,子類無(wú)法重寫(xiě)final方法,成員變量(包括靜態(tài)及非靜態(tài))也屬于前期綁定。除了static方法和final方法(private屬于final方法)之外的其他方法屬于后期綁定,運(yùn)行時(shí)能判斷對(duì)象的類型進(jìn)行綁定。驗(yàn)證程序如下:
class Base
{
//成員變量,子類也有同樣的成員變量名
public String test="Base Field";
//靜態(tài)方法,子類也有同樣簽名的靜態(tài)方法
public static void staticMethod()
{
System.out.println("Base staticMethod()");
}
//子類將對(duì)此方法進(jìn)行覆蓋
public void notStaticMethod()
{
System.out.println("Base notStaticMethod()");
}
}
public class Derive extends Base
{
public String test="Derive Field";
public static void staticMethod()
{
System.out.println("Derive staticMethod()");
}
@Override
public void notStaticMethod()
{
System.out.println("Derive notStaticMethod()");
}
//輸出成員變量的值,驗(yàn)證其為前期綁定。
public static void testFieldBind(Base base)
{
System.out.println(base.test);
}
//靜態(tài)方法,驗(yàn)證其為前期綁定。
public static void testStaticMethodBind(Base base)
{
//The static method test() from the type Base should be accessed in a static way
//使用Base.test()更加合理,這里為了更為直觀的展示前期綁定才使用這種表示。
base.staticMethod();
}
//調(diào)用非靜態(tài)方法,驗(yàn)證其為后期綁定。
public static void testNotStaticMethodBind(Base base)
{
base.notStaticMethod();
}
public static void main(String[] args)
{
Derive d=new Derive();
testFieldBind(d);
testStaticMethodBind(d);
testNotStaticMethodBind(d);
}
}
/*程序輸出:
Base Field
Base staticMethod()
Derive notStaticMethod()
*/
- Java中的靜態(tài)綁定和動(dòng)態(tài)綁定詳細(xì)介紹
- 詳解Java多態(tài)對(duì)象的類型轉(zhuǎn)換與動(dòng)態(tài)綁定
- 理解Java中的靜態(tài)綁定和動(dòng)態(tài)綁定
- Java 靜態(tài)綁定與動(dòng)態(tài)綁定深入分析
- 淺談Java中的重載,重寫(xiě),多態(tài),靜態(tài)綁定、動(dòng)態(tài)綁定
- Java的動(dòng)態(tài)綁定與雙分派_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- XML到Java代碼的數(shù)據(jù)綁定之對(duì)象
- Java編程GUI中的事件綁定代碼示例
- java動(dòng)態(tài)綁定和靜態(tài)綁定用法實(shí)例詳解
相關(guān)文章
java實(shí)現(xiàn)簡(jiǎn)單租車系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單租車系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01如何使用lamda表達(dá)式對(duì)list進(jìn)行求和
這篇文章主要介紹了如何使用lamda表達(dá)式對(duì)list進(jìn)行求和問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06springboot使用filter獲取自定義請(qǐng)求頭的實(shí)現(xiàn)代碼
這篇文章主要介紹了springboot使用filter獲取自定義請(qǐng)求頭的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Eclipse中Debug時(shí)鼠標(biāo)懸停不能查看變量值解決辦法
這篇文章主要介紹了Eclipse中Debug時(shí)鼠標(biāo)懸停不能查看變量值解決辦法,以及分享了一個(gè)簡(jiǎn)單補(bǔ)全代碼的方法,還是比較不錯(cuò)的,需要的朋友可以參考下。2017-11-11詳解Java如何實(shí)現(xiàn)一個(gè)優(yōu)秀的散列表
這篇文章主要通過(guò)簡(jiǎn)單的示例為大家詳細(xì)介紹了在Java中如何實(shí)現(xiàn)一個(gè)優(yōu)秀的散列表,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下2023-07-07Java中的System類、BigInteger類和BigDecimal類詳解
這篇文章主要介紹了Java中的System類、BigInteger類和BigDecimal類詳解,arraycopy()方法,復(fù)制數(shù)組元素,比較適合底層調(diào)用,一般使用Arrays.copyOf()完成復(fù)制數(shù)組,需要的朋友可以參考下2023-09-09