Re: [J2SE] 想問一下有關System.out.println()的問題
※ 引述《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
推
03/13 11:26, , 1F
03/13 11:26, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):