system.in包含什么?

时间:2015-10-24 03:44:52

标签: java class io reference

我正在努力提高对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()

2 个答案:

答案 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类,它包含几种输入,输出和错误输出方法。