看板 java 關於我們 聯絡資訊
※ 引述《s66449 (閒泡菜)》之銘言: : out是static 所以可以直接用類別名稱去呼叫 : 變成System.out 那因為後面的println並不是static : 為什麼可以直接加.println()呢?? : 跟out傳回值是PrintStream類別有關嗎? 你的觀念上還不夠清楚。 1. import 是改變 visibility,不是 accessibility 2. 你只要能夠 access 到 System.out,compiler 就已經知道 System.out 的型態是 PrintStream,進而知道他有 println 這個 method,所以不需 要 import。 這是 type inference 的概念,請見:http://0rz.tw/UUwe7 3. static 指的是 out 是 System 的 static variable,和 println 無關。 大致上你可以把 System.out 看成下面這樣。 class System { static PrintStream out = new PrintStream (....); } 所以 out 其實是一個 static variable,型態是 reference to PrintStream, 指到的是 PrintStream 『物件 (Instance)』。 如果 out 是一個 instance,你當然可以用 println 這個 instance method。 -- ~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走, 'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚…… // \\ ( 墳 墓 ) /( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】 ^`~'^ http://bone.twbbs.org.tw/blog 『那都是很好很好的,可我偏不喜歡。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.42.74
s66449:謝謝講解 03/13 11:26