请高手指点
InputSream in = new FileInputStream(new File("demo.txt"));
和
InputSream in = new FileInputStream(demo.txt));
我查了下InputStream只有一个构造函数InputSream(),不明白怎么这么写的原理,请大家讲解一下
InputStream确实只有一个构造函数,但经过多态后,它新建的对象可以指向其子类(FileInputStream)的新建对象,而FileInputStream的构造方法就有三个,其中一个是FileInputStream(String name), 也有了:
(1)InputSream in = new FileInputStream(demo.txt));
而FileInputStream的另一个构造方法,FileInputStream(File file) 对应的就是你的第一个代码,而这个构造函数由于传递参数是一个类,所以根据File这个类的其中一个构造方法,File(String pathname) 再新建一个对象,所以就变为
(2)InputSream in = new FileInputStream(new File("demo.txt"));
InputSream in = new FileInputStream(new File("demo.txt"));
这句话用到了多态,父类引用指向子类对象。
(new File("demo.txt"))
这句话是传递一个File类的对象。
把File 加载到的文件以对象的形式传递给FileInputStream
还有什么不懂的可以追问我。。。