Java 通过链接构造函数实例化对象

Java 通过链接构造函数实例化对象,java,oop,inheritance,polymorphism,Java,Oop,Inheritance,Polymorphism,我的教科书在文件和流部分有一个让我困惑的例子 BufferedReader inFile = new BufferedReader (new FileReader ("data.txt")); 我的想法是我们正在创建一个类型为BufferedReader的对象,并使用另一个类构造函数FileReader构造它们,然后将该对象“放置”到BufferedReader构造函数中 为什么我们要用两个“新”关键字实例化对象,以及发生了什么 这属于多态性还是继承性 也许这个等价的代码更有意义: FileR

我的教科书在文件和流部分有一个让我困惑的例子

BufferedReader inFile = new BufferedReader (new FileReader ("data.txt"));
我的想法是我们正在创建一个类型为
BufferedReader
的对象,并使用另一个类构造函数
FileReader
构造它们,然后将该对象“放置”到
BufferedReader
构造函数中

为什么我们要用两个“新”关键字实例化对象,以及发生了什么


这属于多态性还是继承性

也许这个等价的代码更有意义:

FileReader fileReader = new FileReader("data.txt");
BufferedReader inFile = new BufferedReader(fileReader);

所有这些都是构造一个
FileReader
对象,该对象用作
BufferedReader
构造函数的参数。这不是多态性或继承的示例,只是将表达式嵌套在其他表达式中。

也许这段等效代码更有意义:

FileReader fileReader = new FileReader("data.txt");
BufferedReader inFile = new BufferedReader(fileReader);

所有这些都是构造一个
FileReader
对象,该对象用作
BufferedReader
构造函数的参数。这不是多态性或继承的示例,只是将表达式嵌套在其他表达式中。

大多数流类可以链接在一起。新运算符使用后面的构造函数返回以下类型的实例。因此,
FileReader
用一个将被读取的文件进行初始化,生成的对象传递给一个
BufferedReader
,这样从文件读取的内容将被缓冲,以便在实际读取过程中进行有效的I/O。

大多数流类可以链接在一起。新运算符使用后面的构造函数返回以下类型的实例。因此,
FileReader
是用一个将被读取的文件初始化的,结果对象被传递给一个
BufferedReader
,这样从文件读取的内容将被缓冲,以便在实际读取过程中进行有效的I/O。

请随意添加我应该如何更有效地问这个问题。我认为你的问题很好。不过,你可能会被否决,因为这是一个非常简单的问题(但这不是你的错)。感谢你的澄清,我认为我做错了什么。请随意补充我应该如何更有效地问这个问题。我认为你的问题很好。不过,你可能会被否决,因为这是一个非常简单的问题(但这并不是你的错)。谢谢你的澄清,我认为我做错了什么。现在这很明显,非常感谢你的例子。像这样嵌套对象有多常见?链接构造函数非常常见,特别是在读者和作者中。谢谢你们,我今天将练习这个。这很明显,非常感谢你们的示例。像这样嵌套对象有多常见?链接构造函数非常常见,特别是对于读者和作者。谢谢你们,我今天将练习这个。