看  了jdk文档    System.in 的inputstream是 抽象类  
但是  
public class ReadFromI { public static void main(String[] args) {
int b = 0;
try {
b = System.in.read();
} catch (Exception e) {
e.printStackTrace();
} System.out.println("读的数据 " + (char) b);
}
}这段代码中的 怎么能有 read()方法......文档里的read()  是抽象方法啊...怎么能直接调用 不明白

解决方案 »

  1.   

    System.in 只是InputStream 标准”输入流。
    你是想从键盘输入数据吗?你可以这样:Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();
      

  2.   

    在源码中可以看到in = new FileInputStream(FileDescriptor.in);in的类型是抽象类InputStream,但它不可能用一个抽象类实例化,实例化的肯定是一个InputStream的具体子类,源码中表示这个是FileInputStream
    看一下java的继承和多态吧
      

  3.   

    System.in 只是InputStream 标准”输入流。
    你是想从键盘输入数据吗?你可以这样:
    Java codeScanner sc = new Scanner(System.in);
    String str = sc.nextLine();
      

  4.   

    源码哪里弄 我也想看看  不知道哪里弄 java源码
      

  5.   

    lz,System.in返回的是InputStream类型的,并不是InputStream,既然是InputStream类型的,Java中的多态lz要好好看看了