Я запутался между интерфейсами и абстрактными классами. Я знаю, что технические различия между ними, такие как интерфейсы, не могут иметь поля, в то время как абстрактные могут, а также интерфейсы применяют множественное наследование, а абстрактные классы не могут.Почему выбрать абстрактный (без реализации по умолчанию) через интерфейс vb.net?
Мне интересно, есть ли у меня абстрактный класс с 4 методами, но без реализации по умолчанию, и у меня есть интерфейс с четырьмя методами, слишком уверенными без реализации, в этот момент в чем разница между их использованием? Они выглядят одинаково для меня!
, когда я могу выбрать абстрактный класс по интерфейсу в этом случае?
В случае * угла *, где у вас есть абстрактный класс с 0% реализованных методов, они действительно напоминают интерфейсы. Но это далеко не * обычное * использование, когда некоторые или все методы будут иметь (по умолчанию) реализацию. –
В некотором сценарии вы можете объявить открытый интерфейс и абстрактный класс внутренним или частным, чтобы любой иностранный код знал и использовал только интерфейс и ваш абстрактный класс, предоставляя вам стандартную (или пустую) реализацию интерфейса. Затем вы получите из абстрактного класса некоторые другие (конкретные) классы для конкретных потребностей, которые не являются общими для друг друга и, следовательно, не могут быть реализованы непосредственно в абстрактном (базовом) классе.Эта иерархия может быть полезна, когда вам (действительно) нужны разные аналогичные классы, чтобы поделиться каким-то общим поведением, но хотите скрыть свое существование. –
спасибо всем за ваши ответы –