
Код OCR
с использованием системы; пространство имен класс Программа { static void Main(stringll args) { Транспортное средство v = новый грузовик(); v.Run() } } абстрактный класс Транспортное средство { общественная недействительность Stop () { Console.WriteLinel'Stopped!"); } общественная пустота Fill () { Console.WriteLinel' Оплатить и заполнить..."); } публичный абстрактный недействительный Run(); } класс автомобиля: Транспортное средство { публичное переопределение void Run() { Console.WriteLinel('Машина едет..."); } } класс Грузовик: Транспортное средство { Пожалуйста, посмотрите на код выше. Учитель рассказал нам, что абстрактные классы можно использовать как инструмент реализации принципа открытости/закрытости при разработке программного обеспечения.
Приведенный выше код используется в качестве примера, иллюстрирующего это. Учитель сказал, что общие методы для всех транспортных средств, такие как Stop и Fill, инкапсулированы в класс Vehicle. Различные реализации этих методов достигаются в классах Car и Truck посредством переопределения. Я понимаю этот подход, но не считаю необходимым использовать абстрактные классы. Мы можем добиться того же с помощью регулярных занятий, верно?
Задайте Vehicle как обычный класс, реализуя внутри него только методы Stop и Fill. Затем позвольте Car и Truck наследовать от Vehicle и реализовать соответствующие методы Run. В начале программы используйте
Var v = новый грузовик() или
Грузовик v = новый грузовик() и по-прежнему иметь возможность использовать
v.Run() Я не понимаю необходимости использования абстрактных классов?