System.out对象是属于类System还是类PrintStream?

我是编程新手,刚开始学习Java。 我很好奇,对象System.out是属于类System还是类PrintStream?

我提到了一本教科书,JAVA CONCEPTS 4 / e。 该教科书指出, 要在System类中使用out对象,必须将其作为System.out引用,但稍后在本书中它声明System.out属于类PrintStream。

我搜索过google和stackoverflow,但所有的答案都让我难以理解。

“out”属于“System”类,属于“PrintStream”类型:)

这取决于你所说的“属于”。

通常,人们会说“属于” System因为它是在该类中声明的静态字段。 但请注意,这种归属概念只是一个弱概念,基本上只暗示命名空间所有权。 类及其静态字段之间没有特殊关系。

您还可以说out变量引用的对象属于PrintStream类,因为它是该类(或子类)的实例,就像“beagle”属于“dog”类一样。 这不是Java术语中的标准用法,但从类型理论的角度来看它是完全合理的,其中类型实际上是一组值,并且out的值“属于”由PrintStream类定义的类型/集合。

它被定义为

 static PrintStream out 

out是System中的静态字段。 它的类型是PrintStream 。

System.out是一个PrintStream对象。 它在System (因此,它是System成员)类中定义为:

 static PrintStream out 

请参阅: http : //docs.oracle.com/javase/6/docs/api/java/lang/System.html

简单来说,’out’是’PrintStream’类’System’类中的一个字段(即一个对象)。

Out是System类中的静态引用变量,属于PrintStream(类)类型。