Класове и Обекти - Сърцето на ООП
- Теория
- Код
C# е обектно-ориентиран език, и понятията за класове, наследяване, и обекти са фундаментални за разработването на ефективни програми.
Класове 📐
Класът в C# е шаблон, който определя характеристиките и поведението на обектите (инстанциите).
Какво Съдържа Един Клас?
- Полета (Fields): Променливите, които държат данните на обекта.
- Методи (Methods): Действията, които обектът може да извършва.
- Конструктори (Constructors): Специални методи за инициализация на нови обекти.
Дефиниция на Клас
public class Person {
private string name;
private int age;
// Конструктор
public Person(string name, int age) {
this.name = name;
this.age = age;
}
// Метод
public void Introduce() {
Console.WriteLine($"Hi, my name is {name}");
}
}
Наследяване: Йерархия на Класове 👨👦
Наследяването е процес, при който един клас (наследник) може да наследи характеристиките на друг клас (базов клас).
Основи на Наследяването
- Наследникът получава всички
public
иprotected
членове на базовия клас. - В C#, един клас може да наследи само от един базов клас (единично наследяване).
Пример за Наследяване
public class Worker : Person {
private string jobTitle;
public Worker(string name, int age, string jobTitle)
: base(name, age) {
this.jobTitle = jobTitle;
}
public void Work() {
Console.WriteLine($"Working as a {jobTitle}");
}
}
Създаване и Използване на Обекти 🛠️
Обектите в C# са конкретни инстанции на класове, които се създават с ключовата дума new
.
Инициализиране на Обект
Person person = new Person("John", 30);
Извикване на Метод на Обект
person.Introduce();
Интересни Факти и Съвети
- В C#, всички класове наследяват от
System.Object
, което е основата на класовата йерархия. - Използването на
base
е ключово при наследяването, тъй като позволява на наследника да достъпи членовете на базовия клас. - Наследяването спомага за повторната употреба на код и структурирането на програмите в йерархични модели.
Класовете формират основата на обектно-ориентираното програмиране. Те предоставят шаблон за създаване на обекти и определят техните характеристики и пове дение.
Прост клас:
public class Animal {
public string Species;
public int Age;
public void MakeSound() {
Console.WriteLine("Some sound...");
}
}
Обяснение: Класът Animal
има две свойства (Species
и Age
) и един метод (MakeSound
).
Създаване и използване на обекти
Обектите в C# са конкретни инстанции на класове, които съхраняват състояние и могат да извършват действия.
Animal cat = new Animal();
cat.Species = "Cat";
cat.Age = 3;
cat.MakeSound(); // Outputs "Some sound..."
Наследяване
Наследяването позволява създаването на нови класове, които разширяват или променят функционалността на съществуващи класове.
public class Cat : Animal {
public override void MakeSound() {
Console.WriteLine("Meow, meow!");
}
}
Cat myCat = new Cat();
myCat.MakeSound(); // Outputs "Meow, meow!"
Обяснение: Cat
е подклас на Animal
и наследява всички свойства и методи. Методът MakeSound
е презаписан (override) в Cat
за специфично поведение.
GETTER И SETTER
В C#, свойствата обикновено се използват вместо getter и setter методи, предлагайки по-елегантен и компактен начин за контролиране на достъпа до полетата на класа.
public class Animal {
private int age;
public int Age {
get { return age; }
set {
if (value > 0) { // Проверка за валидност
age = value;
}
}
}
}
Съкратен синтаксис:
public class Animal {
public int Age { get; set; } // Съкратен запис на същото
}
Този подход осигурява синтаксис, който е по-чист и по-лесен за четене, отколкото традиционните getter и setter методи.