作者c1w7c (菜英文沒有18%%)
看板java
標題Re: [J2SE] private method在subclass內的表現
時間Sun Jul 7 02:01:00 2019
※ 引述《minGW128 (minGW128)》之銘言:
: 各位好:
: 最近在課本上看到一個範例,自己試著打了一下
: 對於最後的結果有些疑,po上來問請問一下大家
: code:
: public class Test {
: public static void main(String[] args) {
: new Person().printPerson(); // Person
: new Student().printPerson(); // Person
: }
: }
: class Student extends Person {
: private String getInfo() {
: return "Student";
: }
: }
: class Person {
: private String getInfo() {
: return "Person";
: }
: public void printPerson() {
: System.out.println(getInfo());
: }
: }
: result:
: Person
: Person
: 問題:
: 簡單來說,Student繼承Person,由於printPerson()是public
: 所以class Student內有繼承到printPerson()
: 但是getInfo()在Person內是private,所以class Student內沒有繼承到getInfo()
: 於是class Student內自行定義了一個自己的getInfo()
: 然後呼叫new Student().printPerson()
: printPerson()內會去呼叫getInfo()函數
: 請問為什麼呼叫的getInfo()函數
: 不是class Student內自行定義的getInfo()
: 而是其superclass Person內的getInfo()呢?
: 謝謝!
可以請教各位大大嗎
這題我看下面留言的解釋還是不太懂(新手...
我一直有個點轉不過來
printperson 不是被class student繼承了
那student這個類別 應該可以使用
printperson方法吧?!那為何student類別裡的 getInfo方法 不能呼叫呢?
謝謝各位!
-----
Sent from JPTT on my LGE LG-H930.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.30.56 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1562436062.A.B8C.html
1F:→ PTTTTTTTT: person裡面的getInfo是private 所以student 裡面的get 07/07 04:52
2F:→ PTTTTTTTT: Info無法override 07/07 04:52
3F:→ PTTTTTTTT: 所以printperson裡面呼叫getInfo只會呼叫到person裡的 07/07 04:54
4F:→ c1w7c: 無法override 就沒有動態繫結的意思嗎 07/07 12:44
5F:→ kogrs: private若還可以overwrite,不就可怕了?還有private的意義嗎 07/07 15:20