BasicKnowledgeCSharp/LessonsAndTasks/Lesson 71 - НАСЛЕДОВАНИЕ/Program.cs
Dvurechensky 058c8f2679 1.0
Main
2024-10-05 09:59:53 +03:00

82 lines
2.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
class Kraft
{
public string FirstName { get; set; }
public string LastName { get; set; }
public void PrintName() => Console.WriteLine($"Name: {FirstName}");
}
/// <summary>
/// Выполнено наследование
/// все свойства, методы и поля унаследованы
/// </summary>
class Ivuc : Kraft
{
public void PrintLastName() => Console.WriteLine($"LastName: {LastName}");
}
/// <summary>
/// наследование в Объектно-ориентированном программировании (ООП)
/// позволяет избежать ненужного дублирования кода
/// позволяет реализовать полиморфизм
/// множественного наследования в C# нет (для классов)
/// </summary>
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();
}
}