Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csOpAbBC 92 of 163 menu
◀ ▶

Конструктор абстрактного класса в C#

Абстрактный класс вполне может иметь конструктор и поля, как обычный тип.

Общие данные задают в родителе, а потомок в вызове base передает аргументы конструктору базы. Запишем User с именем в конструкторе и выведем его у Employee:

abstract class User { public string Name = ""; public User(string name) { Name = name; } public abstract void IncreaseRevenue(int value); } class Employee : User { public int Salary; public Employee(string name, int salary) : base(name) { Salary = salary; } public override void IncreaseRevenue(int value) { Salary += value; } }

Создадим объект класса Employee и выведем имя вместе с окладом:

var employee = new Employee("john", 1000); Console.WriteLine(employee.Name); Console.WriteLine(employee.Salary);

При создании Employee сначала выполняется конструктор User, затем инициализируются поля сотрудника. Абстрактные методы родителя по-прежнему ждут реализации в потомке, но общее состояние уже готово к работе.

Сделайте абстрактный класс User с конструктором, принимающим имя. Сделайте Employee с конструктором имени и зарплаты и передайте имя в конструктор родителя.

Сделайте Student с конструктором имени и стипендии, передайте имя в User и реализуйте IncreaseRevenue.

Создайте по одному объекту Employee и Student, вызовите у них IncreaseRevenue и выведите итоговую зарплату и стипендию.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить