using System; class Kraft { public string FirstName { get; set; } public string LastName { get; set; } public void PrintName() => Console.WriteLine($"Name: {FirstName}"); } /// /// Выполнено наследование /// все свойства, методы и поля унаследованы /// class Ivuc : Kraft { public void PrintLastName() => Console.WriteLine($"LastName: {LastName}"); } /// /// наследование в Объектно-ориентированном программировании (ООП) /// позволяет избежать ненужного дублирования кода /// позволяет реализовать полиморфизм /// множественного наследования в C# нет (для классов) /// class Program { static void Main() { var kraft = new Kraft { FirstName = "terry", LastName = "lamos" }; kraft.PrintName(); var ivuc = new Ivuc { FirstName = "terry", LastName = "lamos" }; ivuc.PrintName(); ivuc.PrintLastName(); // Можно при инициализацими экземпляра класса, инициализировать его наследника // Тем самым, это помогает в работе старого функционала - он может работать и с наследниками var kraft_ivuc = new Ivuc { FirstName = "terry", LastName = "lamos" }; PrintFullName(kraft_ivuc); var teacher = new Teacher { FirstName = "John", LastName = "Karter" }; var student = new Student { FirstName = "Garry", LastName = "Astos" }; LP[] people = { teacher, student }; PrintLP(people); Console.ReadKey(); } static void PrintFullName(Kraft kraft) { Console.WriteLine($"Name: {kraft.FirstName} LastName: {kraft.LastName}"); } static void PrintLP(LP[] persons) { foreach (var person in persons) person.PrintFullName(); } }