我是新手程序员,刚开始学习Java。我很好奇System.out对象属于System类还是PrintStream类?
我参考了一本教材《JAVA概念4/e》。教材表明要使用System类中的out对象,必须将其引用为System.out
,但是在书后面又说明System.out
属于PrintStream类。
我在Google和Stackoverflow上搜索过,但所有答案都太难以理解了。
我是新手程序员,刚开始学习Java。我很好奇System.out对象属于System类还是PrintStream类?
我参考了一本教材《JAVA概念4/e》。教材表明要使用System类中的out对象,必须将其引用为System.out
,但是在书后面又说明System.out
属于PrintStream类。
我在Google和Stackoverflow上搜索过,但所有答案都太难以理解了。
out
“属于”System
,因为它是在该类中声明的一个静态字段。不过要注意的是,这种所谓的“归属”概念只是一个弱关系,基本上只意味着命名空间的所有权。一个类和它的静态字段之间没有特殊的关系。out
变量引用的对象属于PrintStream
类,因为它是该类(或其子类)的实例,就像“比格犬”属于“狗”类一样。这在Java术语中不是标准用法,但从类型理论的角度来看,它是有道理的,其中一个类型实际上是一组值,并且out
的值“属于”由PrintStream
类定义的类型/集合。System.out
是一个 PrintStream
对象。它在 System
类中定义(所以,它是 System
的成员):
static PrintStream out
Out是System类中的静态引用变量,其类型为PrintStream(类)。
System.out instanceof PrintStream?System.out.println("好的,我是PrintStream"):System.out.println("不,我不是PrintStream")
进行检查。 - Roman C