类的对象可以是其他类的成员变量吗?

时间:2012-03-14 16:02:24

标签: java

System.out.println中,'out'是System类的成员变量,它也是PrintStream类的实例。所以任何人都可以告诉我是否可以是System类的成员,它是PrintStream的一个对象是否上课?请关注System.out.println。

2 个答案:

答案 0 :(得分:6)

只是一个公共静态最终变量。你写的任何时候:

System.out.println("Foo");

您正在获取该变量的值(这是PrintStream引用)并在其上调用println()。如果有帮助,请将其视为:

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

System.out 不是 PrintStream本身的实例 - 它是一个变量。变量的也不是PrintStream对象 - 它是对象的引用,它是PrintStream或子类实例

答案 1 :(得分:1)

'out'是System类的公共静态最终成员,例如

public class System {
  public static final PrintStream out;
  static {
    out = new PrintStream()
    ........... // more initialisation
  }
}

为了做一个更简单的例子,你可以很容易地在一个类中包含一个String作为“常量”。这仍然是类String的对象,它是某个其他类的成员变量,例如。

public class MyWidget {
  public static final String WIDGET_NAME = "MyWidget";
  ... // other stuff
}

然后,您可以使用与访问System.out相同的方式访问此字符串:

System.out.println("Widget name length is " + MyWidget.WIDGET_NAME.length());