首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

太神奇了,对System.in.read()的疑问,请

2012-02-27 
太神奇了,对System.in.read()的疑问,请高手指点1.这个in为什么可以被定义为抽像类inputstream定义,抽像类

太神奇了,对System.in.read()的疑问,请高手指点
1.这个in为什么可以被定义为抽像类inputstream定义,抽像类不是一定要被继承的子类才能用么;
2.既然in被定义成抽像类,那为什么还能继续调用.read()方法,我查了源文件根本就没有静态的read()方法,起码他得先建立个对像才能调用read吧
3.in在System中定义,一般情况下是返回null的,null的话不就等于空么,还怎么可以调用方法
4.谢谢邦助我的人,好人一生平安!

[解决办法]
1:
"被定义为抽像类inputstream"你应该理解成 "in是一个InputStream",至于它到底是什么样的InputStream你不需要关心
这就是所谓抽象

2:
System.in是在System类中定义的一个静态field,对in调用read()并非静态调用(System.in是一个实例,而非一个类名)
其他疑问参考答案1

3:
对于输入流的定义各个平台实现的方式肯定是不一致的
System类还需要初始化
这个是System类中的

Java code
/**     * Initialize the system class.  Called after thread initialization.     */    private static void initializeSystemClass() {
[解决办法]
第一、二个问题建议反复理解java的多态机制。

第三个问题的神奇之处在这里:
Java code
    /* First thing---register the natives */    private static native void registerNatives();    static {        registerNatives();    } 

热点排行