Базовый класс и интерфейсы в C#
Класс может наследовать один базовый класс и при этом реализовать один или несколько интерфейсов. Сначала указывают базовый класс, затем интерфейсы через запятую.
Часть методов контракта уже может быть в базе. Новый класс берет их через наследование и дописывает только то, чего не хватает для интерфейса. Запишем сотрудника-программиста:
interface IProgrammer
{
List<string> GetLangs();
void AddLang(string lang);
}
class Employee
{
public string Name { get; set; } = "";
public int Salary { get; set; }
public Employee(string name, int salary)
{
Name = name;
Salary = salary;
}
}
class Developer : Employee, IProgrammer
{
private List<string> langs = new List<string>();
public Developer(string name, int salary)
: base(name, salary)
{
}
public List<string> GetLangs()
{
return langs;
}
public void AddLang(string lang)
{
langs.Add(lang);
}
}
Создадим разработчика, добавим язык и выведем список:
var dev = new Developer("ann", 2000);
dev.AddLang("csharp");
Console.WriteLine(dev.GetLangs().Count);
Сделайте интерфейс IStorable, в котором будет
метод Save.
Сделайте класс Entity. Пусть
у класса будет свойство Title типа
string.
Сделайте класс Article, который будет
наследовать класс Entity и реализовывать
интерфейс IStorable.