作者brianhsu (坟墓)
看板java
标题Re: [J2SE] 想问一下有关System.out.println()的问题
时间Sat Mar 13 08:01:40 2010
※ 引述《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
1F:推 s66449:谢谢讲解 03/13 11:26