亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

創(chuàng)建子類對(duì)象時(shí),父類構(gòu)造函數(shù)中調(diào)用被子類重寫(xiě)的方法為什么調(diào)用的是子類的方法,而被子類重載的方法不會(huì)調(diào)

guyan0319 / 1483人閱讀

摘要:?jiǎn)栴}為什么創(chuàng)建對(duì)象的時(shí)候父類會(huì)調(diào)用子類方法但是創(chuàng)建對(duì)象父類會(huì)調(diào)用父類的方法答案當(dāng)子類被加載到內(nèi)存方法區(qū)后,會(huì)繼續(xù)加載父類到內(nèi)存中。如果子類重載了父類方法,則子類重載方法引用還指向子類方法。

public class Basic{
    public void add(int i)
    {
        System.out.println("Basic add");
    }
    
    public Basic()
    {
        add("a");
    }
}

public class A extends Basic{
    public void add(int i)
    {
        System.out.println("A add");
    }
}

public class B extends Basic{
    public void add(char i)
    {
        System.out.println("B add");
    }
}

public class Main{
    public static void main(String[] args)
    {
        A a = new A();
        B b = new B();
    }
}

問(wèn)題:為什么創(chuàng)建A對(duì)象的時(shí)候父類會(huì)調(diào)用子類方法?
但是:創(chuàng)建B對(duì)象父類會(huì)調(diào)用父類的方法?

答案:
當(dāng)子類被加載到內(nèi)存方法區(qū)后,會(huì)繼續(xù)加載父類到內(nèi)存中。
如果,子類重寫(xiě)了父類的方法,子類的方法引用會(huì)指向子類的方法,否則子類的方法引用會(huì)指向父類的方法引用。
如果子類重載了父類方法,則子類重載方法引用還指向子類方法。
如果子類方法沒(méi)有重寫(xiě)也沒(méi)有重載父類方法,則方法引用會(huì)指向父類方法。

當(dāng)子類對(duì)象創(chuàng)建時(shí),會(huì)先行調(diào)用父類的構(gòu)造方法(構(gòu)造方法也是方法),虛擬機(jī)會(huì)在子類方法區(qū)尋找該方法并運(yùn)行。
但是:由于java語(yǔ)言是靜態(tài)多分派,動(dòng)態(tài)單分派。其結(jié)果是當(dāng)編譯的時(shí)候,父類構(gòu)造方法調(diào)用的方法的參數(shù)已經(jīng)強(qiáng)制轉(zhuǎn)換為符合父類方法的參數(shù)了。
上邊代碼在編譯前已經(jīng)轉(zhuǎn)換為下面這個(gè)樣子的了。

public class Basic{
    public void add(int i)
    {
        System.out.println("Basic add");
    }
    
    public Basic()
    {
        add((int)"a");
    }
}

public class A extends Basic{
    public void add(int i)
    {
        System.out.println("A add");
    }
}

public class B extends Basic{
    public void add(char i)
    {
        System.out.println("B add");
    }
}

public class Main{
    public static void main(String[] args)
    {
        A a = new A();
        B b = new B();
    }
}

看一下上邊的代碼,是不是恍然大悟?

更多文章:http://blog.gavinzh.com

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64399.html

相關(guān)文章

  • java面向對(duì)象(上)

    摘要:根據(jù)出現(xiàn)的位置,作為對(duì)象的默認(rèn)引用有兩種情形構(gòu)造器中引用該構(gòu)造器正在初始化的對(duì)象。在構(gòu)造器中代表該構(gòu)造器正在初始化的對(duì)象。用于限定該對(duì)象調(diào)用它從父類得到的實(shí)例變量和方法。 子類繼承父類就可以繼承到父類的成員變量和方法。如果訪問(wèn)控制允許,子類實(shí)例可以直接調(diào)用父類里定義的方法。 如果多個(gè)重載的構(gòu)造器里包含了相同的初始化代碼,則可以把這些初始化代碼放置在普通代碼塊里完成,初始化塊總在構(gòu)...

    liaosilzu2007 評(píng)論0 收藏0
  • Java 面向對(duì)象(上)

    摘要:對(duì)象的引用關(guān)鍵字總是指向調(diào)用該方法的對(duì)象。根據(jù)出現(xiàn)位置的不同,作為對(duì)象的默認(rèn)引用有兩種情形。構(gòu)造器中引用該構(gòu)造器正在初始化的對(duì)象。如果同一個(gè)類中包含了兩個(gè)或兩個(gè)以上方法的方法名相同,但形參列表不同,則被稱為方法重載。 類和對(duì)象 定義類 面向?qū)ο蟮某绦蛟O(shè)計(jì)過(guò)程中有兩個(gè)重要概念:類(class)和對(duì)象(object,也被稱為實(shí)例,instance),其中類是某一批對(duì)象的抽象,可以把類理解成...

    SimonMa 評(píng)論0 收藏0
  • Java類繼承

    摘要:的繼承具有單繼承的特點(diǎn),每個(gè)子類只有一個(gè)直接父類。繼承的特點(diǎn)的繼承通過(guò)關(guān)鍵字來(lái)實(shí)現(xiàn),實(shí)現(xiàn)繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱其為基類超類。是提供的一個(gè)關(guān)鍵字,用于限定該對(duì)象調(diào)用它從父類繼承得到的實(shí)例變量或方法。 繼承是面向?qū)ο蟮娜筇卣髦?,也是軟件?fù)用的重要手段。Java的繼承具有單繼承的特點(diǎn),每個(gè)子類只有一個(gè)直接父類。 繼承的特點(diǎn) Java的繼承通過(guò)extends關(guān)鍵...

    seanHai 評(píng)論0 收藏0
  • 談?wù)凧ava面向對(duì)象

    摘要:也就是說(shuō),一個(gè)實(shí)例變量,在的對(duì)象初始化過(guò)程中,最多可以被初始化次。當(dāng)所有必要的類都已經(jīng)裝載結(jié)束,開(kāi)始執(zhí)行方法體,并用創(chuàng)建對(duì)象。對(duì)子類成員數(shù)據(jù)按照它們聲明的順序初始化,執(zhí)行子類構(gòu)造函數(shù)的其余部分。 類的拷貝和構(gòu)造 C++是默認(rèn)具有拷貝語(yǔ)義的,對(duì)于沒(méi)有拷貝運(yùn)算符和拷貝構(gòu)造函數(shù)的類,可以直接進(jìn)行二進(jìn)制拷貝,但是Java并不天生支持深拷貝,它的拷貝只是拷貝在堆上的地址,不同的變量引用的是堆上的...

    ormsf 評(píng)論0 收藏0
  • Java 面向對(duì)象特性之多態(tài)性

    摘要:多態(tài)性面向?qū)ο笕筇匦苑庋b繼承多態(tài)。面向?qū)ο蠖鄳B(tài)性存在的三個(gè)必要條件繼承重寫(xiě)父類引用指向子類對(duì)象多態(tài)性的實(shí)現(xiàn)方式重寫(xiě)與重載靜態(tài)多態(tài)性方法重載方法重載允許類具有多個(gè)相同名稱的方法,但是方法參數(shù)列表不同。 多態(tài)性 面向?qū)ο螅∣OP)三大特性:封裝、繼承、多態(tài)。 多態(tài)性(polymorphism)指同一行為具有多種不同表現(xiàn)形式,在面向?qū)ο蟪绦蛟O(shè)計(jì)中表現(xiàn)為同一消息可以根據(jù)發(fā)送對(duì)象的類型不同,做...

    _ang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<