Зачем создавать ссылочную переменную одного типа, но назначать ее другому типу? - PullRequest
0 голосов
/ 09 ноября 2018

Итак, в одном из учебных пособий по Java, которые я смотрел, я наткнулся на следующую строку кода:

Animal mutt = new Dog();

Где Dog расширяется Animal. Эта строка работает, создавая переменную типа Animal, ссылающуюся на экземпляр Dog. Но мне интересно, не можем ли мы сделать это вместо этого?

Dog mutt = new Dog();

Спасибо, надеюсь, вы сможете пролить свет на это.

1 Ответ

0 голосов
/ 09 ноября 2018

Да, вы можете сделать оба.Но иногда возникают ситуации, когда вам нужно оперировать более чем одним типом.Я объясню это проще на примере.

public void wash(Animal animal) { /* Happy Washing */ }

Если вы можете только мыть собаку, но не кошку, то вы можете использовать собаку напрямую.Но когда вы также можете помыть кошек, вам следует вместо этого использовать Animal.

Это называется принцип замещения Лискова [1] и является частью SOLID Idom [2].

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