JavaRush/Java блог/Архив info.javarush/FilterInputStreeam и FilterOutputStream
helllll
25 уровень

FilterInputStreeam и FilterOutputStream

Статья из группы Архив info.javarush
участников
Господа, не могли бы вы объяснить дураку, как работают FilterInputStreeam и FilterOutputStream, и для чего они нужны? Желательно с примерами кода для каждого класса. Прочитал все, что было про них в Thinking Java + javadoc + google + Шилдт, но так толком и не понял. Зачем в них protected конструкторы?
Комментарии (2)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
vasiliy_urosov
Уровень 31
10 мая 2014, 06:08
В исходном коде этих классов делается только вызов методов объекта InputStream, который передаётся в конструкторе. Для чего нужны — ну, можно придумать что-то вроде: наследники этого класса будут, например, реализовывать шифр Цезаря. Или выполнять какую-нибудь [де]компрессию. И в программе своей мы запретим передавать данные в интернет или сохранять на диск, если они получены не от Filter-классов.
protected-конструкторы, на мой взгляд, полезны тем, что не позволяют создать объект, просто написав:
new FilterOutputStream();

Тебе придется сначала унаследоваться от этого класса, реализовать всё, что ты пожелаешь, и только потом, в единственном законченном классе-потомке расширить видимость конструктора до public.
Например, наследуешься от FilterInputStream, переопределяешь методы read, реализуя щифр Цезаря. Потом наследуешься от цезарева класса, и переопределяешь ещё методы: available, read, skip… Например, реализуя шифрование base64. И только у этого класса делаешь public-конструктор. В любом месте хватит всего-то проверки на то, является ли класс, с которого ты читаешь, объектом типа FilterInputStream или нет.
helllll
Уровень 25
10 мая 2014, 15:28
А можно с примерами для каждого класса?