【发布时间】:2015-10-24 03:44:52
【问题描述】:
我正在努力提高我对 IO 的理解。据我了解,'in' 是 System 类的成员变量。
我相信它是一个引用变量,因为它的类型是 http://docs.oracle.com/javase/7/docs/api/java/lang/System.html 中提到的“InputStream”
但是,'InputStream' 是一个抽象类,因此无法实例化。
我做了一些测试并得出结论,虽然你不能实例化一个抽象类,但你可以创建一个抽象类类型的引用变量。所以我的第一个问题是这样做有什么目的,如果没有,为什么允许这样做?
Example:
abstract class Someclass {
;
}
Someclass variable; // A field member of some another class. What purpose could it serve?
所以我的第二批相关问题来了。 system.in 变量包含什么(或引用)?肯定不是
InputStream in = new InputStream();
因为它是一个抽象类。这是否意味着它有某个子类的实例?如果有,是哪一个?有没有办法在线查看领域流行变量和方法的“主体”?
感谢您的帮助。
编辑:重复的建议未能解决问题。我唯一了解的是 InputStream 可能是用 BufferedStream 类实例化的。
以下问题仍然存在:
1.) 有没有办法在线查看领域流行变量和方法的“主体”? 2.) 为什么允许引用抽象类,目的是什么?
3.) 以及作为一系列建议提出的新问题 - 为什么是 InputStream in = new BufferedStream() 而不是 BufferedStream in = new BufferedStream()
【问题讨论】:
-
System.in引用了InputStream的实现,它从外部世界获取输入,通常来自键盘,但输入可以通过其他方式(通常称为标准输入)管道输入