在其他类中使用类的实例?

时间:2013-08-01 15:58:19

标签: java println system.out

当我们在java中声明System.out.println()时,在屏幕上输出内容。 在此语句中System是类,out是该类的对象,println()是该类的方法。

当我们在B类中声明一个实例或对象时,假设是A类,然后使用以下语法A object;,然后如果该类的任何方法已被声明为public,然后在以下语法中调用方法object.method(argument)

现在我的问题是,我们无法使用以下语法out声明类System的对象System out = new System();

4 个答案:

答案 0 :(得分:4)

  

在本声明中,“System”是类,“out”是该类的对象,

不,out is a static field within System。这是一个返回PrintStream引用的字段。它是不是 System的实例。所以你可以使用:

PrintStream stream = System.out;
stream.println("Foo");

(顺便区分类,对象,字段,引用等很重要。花一些时间来使术语正确可以真正帮助你正确理解它。)

答案 1 :(得分:2)

System有一个您无法访问的私有构造函数:

64    private System() {
65    }

source

如果按System out = new System()您尝试重新分配System.out ...那么您也不能这样做,因为outfinal因此无法重新分配在初始化之后(更不用说它是PrintWriter类型,而不是System)。

答案 2 :(得分:1)

您误解了Java语法的工作原理。在System.out中,System是一个类。点运算符意味着out是该类的成员(在这种情况下是变量,而不是方法,因为没有括号),而不是它的实例。 outPrintStream类型的对象,实际上您可以创建PrintStream的新实例(例如通过打开文件进行写入)。

System碰巧是一个特殊的Java类,你无法自己实例化。对于大多数类,您可以使用您描述的语法:     Car myCar = new Car();

答案 3 :(得分:0)

out - 是System类的static member field,类型为PrintStream。其访问说明符为public final

这在启动期间实例化,并使用主机的标准输出控制台进行映射。

See how it works