JAVA, глупый вопрос - Вопросы по Java

Вопрос JAVA, глупый вопрос

Регистрация
15 Июл 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Почему мы именно пишем,
InputStream inStream = new FileInputStream("c:/source.txt");
а не
FileInputStream inStream = new FileInputStream("c:/source.txt");

Буду очень рад объяснению как для ребенка
 
Регистрация
7 Июн 2013
Сообщения
73
Репутация
0
Спасибо
0
Монет
0
Потому что хорошей практикой является программирование от интерфейсов. Хотя в данном случае InputStream абстрактный класс, но тем не менее. К примеру, если этот InputStream нужно будет в миллиард разных мест передавать, добавлять в миллион разных коллекций, типизированных FileInputStream, и вдруг понадобится изменить реализацию с FileInputStream на какую-то другую, то придется менять эту реализацию везде. А если везде в коде будет использоваться более общий тип InputStream, то без разницы какую ты реализацию будешь передавать в эти методы и добавлять в коллекции. Там везде стоит общий тип InputStream. Но если тебе понадобится вызывать конкретные методы, которые есть только в FileInputStream, то придется либо делать даункастинг до FileInputStream в том месте, где тебе понадобится их вызывать, либо лучше писать сразу так, как ты написал во втором случае и везде использовать FileInputStream. В общем, всегда стоит выбор, как лучше писать. Но по дефолту лучше использовать более общий тип, как в первом случае написано.
 
Сверху Снизу