Создание объекта с помощью цепочки конструкторов - PullRequest
0 голосов
/ 20 мая 2018

В моем учебнике есть пример в разделе «Файлы и потоки», который меня смущает.

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

Я думаю, что мы создаем объект типа BufferedReader и конструируем его с помощью другого конструктора классов FileReader, а затем «кладем» этот объект в конструктор BufferedReader.

Почему мы создаем объект с двумя «новыми» ключевыми словами и что происходит?

Подпадает ли это под полиморфизм или наследственность?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Большинство потоковых классов могут быть объединены в цепочку.Оператор new возвращает экземпляр следующего типа, используя следующий конструктор.Таким образом, FileReader инициализируется файлом, который будет прочитан, с результирующим объектом, переданным в BufferedReader, так что чтение из файла будет буферизовано для эффективного ввода-вывода во время фактического чтения.

0 голосов
/ 20 мая 2018

Возможно, этот эквивалентный код будет иметь больше смысла:

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

Все, что он делает, это создает объект FileReader, который используется в качестве аргумента для конструктора BufferedReader.Это пример ни полиморфизма, ни наследования, это просто вложенные выражения внутри других выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...