黑马程序员技术交流社区

标题: 关于System类的问题 [打印本页]

作者: 梁清平    时间: 2012-6-1 17:20
标题: 关于System类的问题
System.in当中的in是字段,请问字段是什么意思呢?
它返回的是一个InputStream抽象类。
为什么可以写成:
InputStream in = System.in
in.read();//按理说抽象类是不可以创建对象吧?那么这里的in是代表哪个类的对象啊?是InputStream的子类吗?是哪个子类啊?

作者: 杜俊彪    时间: 2012-6-1 17:44
字段也称为属性,相当于一个类的成员变量(相当与C++中)
因为in是System类的InputStream类型的静态属性(字段),所以可以直接拿来用而不用实例化对象,定向到控制台输入
作者: 刘伯阳    时间: 2012-6-1 17:49
因为in也是静态的啊,静态的属性不用它的类实例化就可以使用的。比如:
class A {
    public static int b = 0;
}

A不用实例化,就可以通过A.b来使用静态参数。
作者: 何拴绪    时间: 2012-6-1 18:18
System.in 的in 是System类调用的他的字段,返回的是InputStream类型,标准的输入流。
InputStream是抽象类,但是他有自己的构造方法。你可以通过重写他的某些方法,然后new一个对象出来
这是java的多态性,就是父类引用指向子类对象。
作者: 赵志勇    时间: 2012-6-1 18:22
System.in当中的in是字段,它是一个 “标准”输入流。
为什么可以写成:
InputStream in = System.in
in.read();//这里的in是一个inputStream 类型的变量。

作者: 黑马11期李项京    时间: 2012-6-2 10:27
关于这种问题,要了解某个类某个属性的使用的,要养成良好的习惯——多查看API
查阅可知:static InputStream in
          “标准”输入流。 意思是System.in返回的类型是InputStream类型




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2