当我们调用时
System.out.println("aaa");
我们没有实例化类System
的对象。
System
不是静态类。在文档中,它仅表示System
为public final
。
所以我的问题是为什么我们可以将System
用作静态类?
答案 0 :(得分:1)
System类包含几个有用的类字段和方法。它无法实例化。
System类提供的功能包括标准输入,标准输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及用于快速复制阵列的一部分的实用方法。
如果检查api,它的所有方法都是静态的。您只是访问其公共字段out
...请查看此question以获取有关何时实例化的更多信息
答案 1 :(得分:1)
类不是静态的,但其中的字段和方法是。您仍然可以通过这种方式调用静态方法。
答案 2 :(得分:1)
因为out
是类System
上的公共静态字段。可以使用Type.member
语法访问静态成员。
在您的示例中,您正在调用println()
上定义的实例方法PrintStream
。调用目标是存储在静态字段PrintStream
中的System.out
实例。
答案 3 :(得分:1)
System
是一个顶级课程。由于out
是静态的(不是“系统本身”),我们使用您描述的语法。
访问静态类成员的语法是
<类名>。<会员名称>
请注意这与访问非静态方法或字段有何不同:
< object name>。< member name>
请注意,语法由类的成员的静态性决定,而不是类本身的静态性。在您的示例中,System
的静态是无关紧要的; out
的静态是最重要的。