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

use*_*096 3 java class system.out

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

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

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

Phi*_*ger 6

"out"属于"System"类,属于"PrintStream"类型:)


Mar*_*nik 5

这取决于你所说的“属于”是什么意思。

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

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