System类中有in这个成员变量,查源码它的定义是public static final InputStream in
对于这个定义不太理解,书上说可以通过System.in.read()来调用InputStream的read方法,InputStream不是一个抽象类吗,只能通过通过它的子类new一个对象出来然后再调用它的方法,为什么可以用System类的一个成员变量in作为InputStream类的一个对象,来调用一个抽象类的抽象方法呢 ?所以
system.in返回的到底是什么?
总的来说,不理解下面两行代码(两行代码不存在相互关系):
system.in.read() system.in返回啥,怎么还能调用方法?
InputStreamReader isr = new InputStreamReader(System.in);什么意思这?
看网上说这是多态:
InputStream is = System.in;
编译看左边,运行看右边。InputStream中含有read()方法,所以编译不会报错。而运行时候,是运行的右边,即InputStream的子类。
还有一个简单的方法,直接System.out.println(System.in); 打印出来的,是一个java.io.BufferedInputStream@68d448a1;
即,System.in 表示的是一个BufferedInputStream对象。
可我也没发现InputStream和System.in存在字父类的关系
求各位解惑