在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java 子類繼承父類后,在子類中重復( 不是重寫)父類的private方法,所

java 子類繼承父類后,在子類中重復( 不是重寫)父類的private方法,所產(chǎn)生的疑問。

對一下代碼的輸出結(jié)果很有疑問。請懂得的人指教。

public class Test {

public static void main(String[] args) {
    new Person().printPerson();
    new Student().printPerson();
}

}

class Student extends Person {

private String getInfo() {
    return "student";
}

}

class Person {

private String getInfo() {
    return "person";
}

public void printPerson() {
    System.out.println(getInfo());
}

}

輸出結(jié)果是:
person
person


為什么會這樣?
Student的實例調(diào)用printPerson()方法,為什么沒有輸出“student”?

回答
編輯回答
雅痞

嗯 沒錯 當你student調(diào)用時 printperson()時候,jvm 根據(jù)invokevirtual 找到了父類的實現(xiàn)。然后調(diào)用getinfo時候,此時穿入得this 雖然實際是student 但類型是Person 然后發(fā)現(xiàn)是private 直接invokespecial 調(diào)用,不用多態(tài)了

2017年9月22日 18:16
編輯回答
離人歸

我自己已經(jīng)在知道了。
主類中Student的實例,調(diào)用printPetson方法是不能調(diào)用Student自己的getInfo方法的,因為getInfo方法是私有方法,不能直接調(diào)用。

而父類Person的GetInfo方法雖然是私有的,但是通過其公共的printPerson方法可以直接訪問。

所以Student的實例調(diào)用printPerson方法,會調(diào)用與此方法同屬一個類的私有g(shù)etInfo方法。

2017年8月8日 13:07
編輯回答
笨笨噠

新手中的新手,自己new兩次,而只有父類打印

2018年5月3日 19:17