Наслідування(inheritance) та Окремі файли (ООП 2)
Наслідування
Що таке Наслідування?
Наслідування - це один з фундаментальних концепцій об'єктно-орієнтованого програмування (ООП). Воно дозволяє створювати новий клас на основі існуючого класу, успадковуючи його властивості та методи. Цей новий клас називається підкласом, а існуючий - батьківським класом.
Синтаксис наслідування в C#:
class ChildClass : ParentClass
{
// Додаткові поля та методи для ChildClass
}Розглянемо приклад, де маємо батьківський клас Animal та підклас Cat, який успадковує властивості та методи від батьківського класу.
using System;
// Батьківський клас
class Animal
{
public string Name { get; set; }
public void MakeSound()
{
Console.WriteLine("Звук тварини");
}
}
// Підклас, який успадковує Animal
class Cat : Animal
{
public void Purr()
{
Console.WriteLine("Кіт муркотить");
}
}
class Program
{
static void Main()
{
Cat myCat = new Cat();
myCat.Name = "Барсик";
// Виклик методу з батьківського класу
myCat.MakeSound(); // Виведе "Звук тварини"
// Виклик методу з підкласу
myCat.Purr(); // Виведе "Кіт муркотить"
}
}У цьому прикладі клас Cat успадковує властивість Name та метод MakeSound від класу Animal. Крім того, він має свій власний метод Purr.
Наслідування дозволяє створювати ієрархію класів та спрощує використання коду, оскільки ви можете перевикористовувати властивості та методи батьківського класу в підкласі.
Створення та використання коду в різних файлах
Як створювати класи в різних файлах та потім їх використовувати.
Створення та використання коду в різних файлах:
Створіть новий проєкт: Спочатку створіть новий проєкт в Visual Studio Code або за допомогою .NET CLI.
Створіть файли класів: Для того щоб створити код у різних файлах, створіть файли класів з розширенням
.cs. Наприклад, ви можете створити два файли:MainClass.csтаHelperClass.cs.Оголосьте класи: У кожному файлі класу ви можете оголосити свій клас. Ось приклад файлу
MainClass.cs:
using System;
public class MainClass
{
public void MainMethod()
{
Console.WriteLine("Це головний метод");
}
}- Використання класів: Тепер у іншому файлі, наприклад,
HelperClass.cs, ви можете використовувати класи, які оголошено в інших файлах. Ось прикладHelperClass.cs:
public class HelperClass
{
public void HelperMethod()
{
MainClass mainClass = new MainClass();
mainClass.MainMethod();
Console.WriteLine("Це допоміжний метод");
}
}- Виклик методів: У вашому головному файлі, наприклад,
Program.cs, ви можете створити об'єкти цих класів і викликати їхні методи:
class Program
{
static void Main()
{
MainClass mainClass = new MainClass();
HelperClass helperClass = new HelperClass();
mainClass.MainMethod();
helperClass.HelperMethod();
}
}Таким чином, ви можете розділяти код вашого проєкту на різні файли та використовувати його для кращої організації та модульності. У цьому прикладі MainClass та HelperClass оголошені у різних файлах, і вони все одно можуть взаємодіяти один з одним в програмі.
Не забудьте додати файли класів до вашого проєкту та скомпілювати його для правильної роботи.
Створення та використання коду в різних файлах
Приклади використання наслідування в C#.
Приклад 1: Простий наслідуваний клас
using System;
// Батьківський клас
class Vehicle
{
public string Make { get; set; }
public string Model { get; set; }
public void Start()
{
Console.WriteLine("Запуск транспортного засобу");
}
}
// Підклас, який успадковує Vehicle
class Car : Vehicle
{
public void Accelerate()
{
Console.WriteLine("Авто розганяється");
}
}
class Program
{
static void Main()
{
Car myCar = new Car();
myCar.Make = "Toyota";
myCar.Model = "Camry";
myCar.Start(); // Виклик методу з батьківського класу
myCar.Accelerate(); // Виклик методу з підкласу
}
}У цьому прикладі Car успадковує властивості та метод Start від батьківського класу Vehicle. Крім того, він має свій власний метод Accelerate.
Приклад 2: Перевизначення методу батьківського класу
using System;
// Батьківський клас
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Малюємо фігуру");
}
}
// Підклас, який успадковує Shape та перевизначає метод Draw
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Малюємо коло");
}
}
class Program
{
static void Main()
{
Shape shape = new Circle();
shape.Draw(); // Виклик перевизначеного методу з підкласу
}
}У цьому прикладі метод Draw батьківського класу Shape перевизначено у підкласі Circle. При виклику Draw на об'єкті типу Shape, виконується метод з підкласу.
Приклад 3: Використання базового конструктора
using System;
// Батьківський клас
class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
}
// Підклас, який успадковує Person та використовує його конструктор
class Student : Person
{
public Student(string name, int grade) : base(name)
{
Grade = grade;
}
public int Grade { get; set; }
}
class Program
{
static void Main()
{
Student student = new Student("Олег", 10);
Console.WriteLine($"Ім'я: {student.Name}, Клас: {student.Grade}");
}
}У цьому прикладі клас Student успадковує клас Person та використовує конструктор батьківського класу (base(name)), щоб ініціалізувати поле Name.
Приклад 4: Багато рівнів успадкування
using System;
class Animal
{
public void Eat()
{
Console.WriteLine("Тварина їсть");
}
}
class Mammal : Animal
{
public void GiveBirth()
{
Console.WriteLine("Ссавець народжується");
}
}
class Dog : Mammal
{
public void Bark()
{
Console.WriteLine("Собака гавкає");
}
}
class Program
{
static void Main()
{
Dog myDog = new Dog();
myDog.Eat(); // Метод успадкований від Animal
myDog.GiveBirth(); // Метод успадкований від Mammal
myDog.Bark(); // Метод з підкласу Dog
}
}У цьому прикладі показано багаторівневий успадок, де клас Dog успадковує клас Mammal, який, в свою чергу, успадковує клас Animal. Кожен клас додає власні методи.
Приклад 5: Поліморфізм
using System;
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Звук тварини");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Собака гавкає");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Кіт муркотить");
}
}
class Program
{
static void Main()
{
Animal myAnimal = new Dog();
myAnimal.MakeSound(); // Виклик перевизначеного методу
}
}У цьому прикладі клас Animal має віртуальний метод MakeSound, який перевизначено в підкласах Dog та Cat. Використовуючи поліморфізм, можна визначити метод у батьківському класі, а потім викликати його на об'єкті підкласу, як це показано в Main.
build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse