java的前期綁定和后期綁定使用示例
后期綁定,是指在運行時根據(jù)對象的類型進行綁定,又叫動態(tài)綁定或運行時綁定。實現(xiàn)后期綁定,需要某種機制支持,以便在運行時能判斷對象的類型,調(diào)用開銷比前期綁定大。
Java中的static方法和final方法屬于前期綁定,子類無法重寫final方法,成員變量(包括靜態(tài)及非靜態(tài))也屬于前期綁定。除了static方法和final方法(private屬于final方法)之外的其他方法屬于后期綁定,運行時能判斷對象的類型進行綁定。驗證程序如下:
class Base
{
//成員變量,子類也有同樣的成員變量名
public String test="Base Field";
//靜態(tài)方法,子類也有同樣簽名的靜態(tài)方法
public static void staticMethod()
{
System.out.println("Base staticMethod()");
}
//子類將對此方法進行覆蓋
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()");
}
//輸出成員變量的值,驗證其為前期綁定。
public static void testFieldBind(Base base)
{
System.out.println(base.test);
}
//靜態(tài)方法,驗證其為前期綁定。
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)方法,驗證其為后期綁定。
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()
*/
相關(guān)文章
Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類
這篇文章主要介紹了Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類,可實現(xiàn)針對properties配置文件的相關(guān)修改與保存功能,需要的朋友可以參考下2017-11-11
詳解基于java的Socket聊天程序——初始設(shè)計(附demo)
本篇文章主要介紹了Socket聊天程序——初始設(shè)計(附demo),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
靜態(tài)方法中調(diào)用Spring注入過程解析
這篇文章主要介紹了靜態(tài)方法中調(diào)用Spring注入過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
spring使用Filter過濾器對Response返回值進行修改的方法
這篇文章主要介紹了spring使用Filter過濾器對Response返回值進行修改,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09
java中快速創(chuàng)建帶初始值的List和Map實例
下面小編就為大家?guī)硪黄猨ava中快速創(chuàng)建帶初始值的List和Map實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10

