Как можно быть уверенным, что мне вернётся объект класса Bus, и что в нём будет метод openDoor?
Но как происходит выбор класса который, в конечном итоге, возвращается в методе?
но такое выставлять как то стыдно
А как это все учесть, я не знаю
while(in.good())
{
in.read()
...
} 2. Такие утверждения следует подкреплять бенчмарком.
Вот примерно одна из попыток.
Пробовал оператор
if(a>0)
запись в файл положительных чисел
else
запись в файл отрицательных чисел
Почему, собственно?
Из вашего примера: startCar принимает ICar, почему же вы считает, что вы в starCar можете вызвать openDoor? Этого метода нет в ICar. В starCar доступно только то, что описано в ICar.
Правильно говорится. Делается это для минимизации зависимостей. Ваш startCar будет зависеть только от интерфейса, вы можете в дальнейшем еще 10 специализаций интерфейса сделать, а startCar останется неизменным.
Привыкайте.
В компьютерах (и не только) сплошные черные ящики.
Если вы не автослесарь, то вы толком не знаете, как едет ваша машина. Ну да, понятно, что бензин в движке сгорает (об этом в школе рассказывали) и из-за этого крутятся колеса. Но это как-то не прозрачно :)