Реализация в потомке в C#
Реализация в потомке снимает абстрактность метода: компилятор находит тело там, где создают объект.
В наследнике пишут метод с тем же именем и теми же
параметрами и помечают его override. Запишем
Student, который увеличивает стипендию,
и выведем результат:
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;
}
}
class Student : User
{
public int Scholarship;
public Student(string name, int scholarship)
: base(name)
{
Scholarship = scholarship;
}
public override void IncreaseRevenue(int value)
{
Scholarship += value;
}
}
Создадим объект класса Student и увеличим ему стипендию:
var student = new Student("ann", 500);
student.IncreaseRevenue(50);
Console.WriteLine(student.Scholarship);
Если потомок не переопределит хотя бы один абстрактный метод родителя, его тоже нельзя будет создать - класс останется абстрактным.
Напишите реализацию методов площади и периметра
в классах Circle, Rectangle
и Square для вашего Figure.