我正在努力提高对IO的理解。据我所知,'in'是System类的成员变量。
我认为它是一个引用变量,因为它的类型是'{3}}中提到的'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()
答案 0 :(得分:1)
关于问题
3。)并且新问题作为一系列建议而上升 - 为什么它是InputStream in = new BufferedStream()而不是 BufferedStream in = new BufferedStream()
了解依赖注入。
有关
2。)为什么允许引用抽象类以及它的目的是什么?
据我所知,我只能说:根据定义,我们不能创建抽象类的 NEW 实例,但我们可以使用现有的实例。因为它仍然可以拥有数据成员和数据变量。由于这些数据成员可能不是静态的,我们需要一个名称引用来访问它。
你的问题1不清楚。但是如果想从.class文件中查看源代码,请阅读反编译器。 Java随附了它。
答案 1 :(得分:0)
System.in是一个InputStream,通常连接到控制台程序的键盘输入。由于数据通常通过命令行参数或配置文件传递到命令行Java应用程序,因此不经常使用System.in。在具有GUI的应用程序中,应用程序的输入是通过GUI给出的。这是Java IO的独立输入机制。系统本身是java.lang包中的公共final类,它包含几种输入,输出和错误输出方法。