我有一点疑问,这可能是一个非常蹩脚的问题,但请耐心等待。
我正在检查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));
?
答案 0 :(得分:0)
没有构造函数或方法接受
new FileInputStream(fileName)
作为父类InputStreamReader
中的参数。
是的,但FileInputStream
是InputStream
的子类,因此FileReader
构造函数正在调用InputStreamReader(InputStream in)
。请记住,您可以将子类实例(FileInputStream
object)作为参数传递给接受超类实例(InputStream
object)作为参数的方法或构造函数。