Меню сайта
Категории раздела
HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Наш опрос
Друзья сайта
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » C# |
Урок 12
Давайте рассмотрим это все на примере. У нас будет класс Worker и производный от него класс Boss. Класс Boss будет отличаться от класса Worker во-первых, наличием переменной numOfWorkers (для количества подчиненных) и, во вторых, метод для задания возраста (setAge) будет работать в Boss не так: using System; namespace test { //Класс Worker class Worker { protected int age=0; public void setAge(int age) { if(age>0 && age<100) this.age=age; else this.age=0; } public int getAge() { return age; } } //Класс Boss class Boss : Worker{ public int numOfWorkers; //Количество подчиненных public new void setAge(int age) { if(age>0 && age<45) this.age=age; else this.age=0; } } class Test { static void Main(string[] args) { Worker wrk1 = new Worker(); Boss boss = new Boss(); wrk1.setAge(50); boss.setAge(50); boss.numOfWorkers=4; Console.WriteLine("Возраст работника "+wrk1.getAge()); Console.WriteLine("Возраст босса "+boss.getAge()+ ".\nКоличество подчиненных "+boss.numOfWorkers); } } } Обратите внимание, как мы вводим новый класс Boss: ... class Boss : Worker{ ... Такая запись и означает, что новый класс Boss будет потомком другого класса (Worker в данном случае). Так как наш класс - потомок другого класса, то он автоматически умеет все тоже самое, что и родительский класс. В частности, в нем есть переменная age для хранения возраста. Далее, в класс Boss мы вводим переменную numOfWorkers для хранения количество подчиненных у нашего босса. В родительском классе такой переменной не было. Кроме того, нас не устроила реализация метода setAge из родительского класса Worker (по каким-то там внутренним инструкциям фирмы возраст босса не может превышать 45 лет, тогда как возраст работника не может превышать 100), поэтому мы просто написали в классе Boss метод с таким же именем. Обратите внимание на слово new при объявлении метода: ... public new void setAge(int age) ... Таким образом мы в производном классе можем что-нибудь добавлять и что-нибудь изменять по отношению к классу родительскому. Обратите внимание, что убирать что-нибудь, полученное в наследство от родительского класса, мы не можем. При запуске наша программа даст вполне ожидаемый результат - в возраст работника запишется 50, в возраст босса - 0. | |
Просмотров: 689 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |