我在一个无法为 Console 类创建新实例的地方感到震惊。所以我拿了jdk的源代码然后研究它。然后我被清除它被声明为“公共最终类控制台............”......所以我明白最终类不能被实例化。但这不是我真正的怀疑。在 SCJP 书中,我遇到了一行代码,告诉我Console c = System.console()
这里我们不能为控制台类创建新实例,所以创建一个引用变量 c。那么 System.console 实际上是什么?在书中它被称为
Keep in mind that it's possible for your Java program to be running in an environment that doesn't have access to a console object, so be sure that your invocation of System.console() actually returns a valid console reference and not null.
然后我进入查找 System.console() 的源代码。
在那里,我碰巧看到 System 是最终类,而 console() 是其中的静态方法。
那么控制台引用对象如何引用系统类中的那个控制台方法。这两者之间的联系是什么。我想到了一个多态引用。但这并不是因为它没有通过 IS-A 测试。所以请详细解释一下。
希望我的问题很清楚。提前致谢。!