【问题标题】:Can a static member refer/access to an instance method of a class?静态成员可以引用/访问类的实例方法吗?
【发布时间】:2018-09-03 15:12:15
【问题描述】:

据我所知这是不正确的,那么系统类的 out 变量是怎么来的

 final static PrintStream out = null;

可以参考System.out.print();中PrintStream类的print方法@

public void print(Object obj) {
    write(String.valueOf(obj));
}

PS:这个问题和Java中System.out.println是什么意思不一样?或任何相关的。

【问题讨论】:

  • 这两个代码sn-ps之间没有关系。
  • 在 System.out.print() 或在 system.out.println() 方法中 out 变量用于引用打印方法
  • 您在这里混淆了各种陈述和术语。您显然还不明白 System.out.println 的含义/作用。
  • out 是 PrintStream 的一个实例,因此它可以使用 PrintStream 的实例方法。
  • out 是 System 类的静态成员。

标签: java static instance printstream


【解决方案1】:

短语“静态成员不能引用实例方法”过于简单化,会引起混淆。

实际的限制是静态方法和静态字段初始值设定项不能在不为调用提供对特定对象的引用的情况下调用实例方法。

如果使用static System.out,则完全没有问题,因为print 直接在PrintStream 对象上调用,而该对象恰好存储为一些其他static 字段> 类,在本例中为java.lang.System。没有区别

System.out.print("hello");

PrintStream myOutput = System.out;
myOutput.print("hello");

【讨论】:

    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-11-26
    • 2013-08-24
    • 2023-04-10
    相关资源
    最近更新 更多