Computercomp=newNotebook( … ); Таким образом, методы, которые у потомков должны реализовываться по- разному, при описании базовых классов следует определять виртуальными. Ес- ли во всех классах иерархии метод будет выполняться одинаково, его лучше определить как обычный метод. Виртуальные методы базового класса задают поведение всей иерархии, которое может изменяться и дополняться в потомках за счет добавления новых виртуальных методов. С помощью виртуальных ме- тодов реализуется один из основных принципов ООП – полиморфизм.
Отметим, что элементы базового класса с модификатором private в классе- наследнике недоступны, для них следует использовать модификатор protected, а для самого базового класса public или internal. Спроектируем класс Notebook, который имеет два поля model (модель) и ram (оперативная память), а также методы Start (включение) и End (выключение). Ранее мы уже создали класс Computer с такими полями и методами. Имеет смысл считать класс Notebook потомком класса Computer, который наследует эти поля и метод Start без изменения (при включении они работают одинаково). Особен- ность ноутбука – наличие батареи, которая может заряжаться и после выключения ноутбука. Поэтому в класс Notebook надо добавить поле time (требуемое время зарядки батареи) и переопределить метод End, чтобы он показывал это время.
Пример1
Реализациянаследования. Откроем ранее созданный проект con241 с классами Program и Computer.
Для задания отношения наследник-предок на Панели элементоввыбе- рем пункт Наследование и мышью с нажатой левой кнопкой протащим стрел- ку от прямоугольника класса Notebook до класса Computer (рис 2.7).
С помощью окна Сведенияоклассах зададим поля и методы класса