FileReader如何构建FileInputStream和Input Reader?

时间:2018-05-13 11:50:53

标签: java

我有一点疑问,这可能是一个非常蹩脚的问题,但请耐心等待。

我正在检查FileReader的源代码。因此,当FilerReader创建它时,它构造FileInputStream。这是代码段

public class FileReader extends InputStreamReader {


    public  FileReader(String fileName) throws FileNotFoundException {

        super(new FileInputStream(fileName));

    }

我的疑问是FileReader扩展了InputStreamReader,这里FileReader是InputStreamReader的子节点,但是当调用FileReader的构造函数时,那怎么可能"super(new FileInputStream(fileName));"

没有构造函数或方法接受new FileInputStream(fileName)作为父类中的参数,即InputStreamReader。

Fileinput流具有以下层次结构..

 java.lang.Object
    java.io.InputStream
        java.io.FileInputStream

似乎是FileInputStream和InputStreamReader之间的任何关系..!

任何人都可以帮我理解这个吗?如何以及从何处调用super(new FileInputStream(fileName));

1 个答案:

答案 0 :(得分:0)

  

没有构造函数或方法接受new FileInputStream(fileName)作为父类InputStreamReader中的参数。

是的,但FileInputStreamInputStream的子类,因此FileReader构造函数正在调用InputStreamReader​(InputStream in)。请记住,您可以将子类实例(FileInputStream object)作为参数传递给接受超类实例(InputStream object)作为参数的方法或构造函数。