Merosxo’rlik (inheritance) — OOP ning ikkinchi ustuni. U bir sinfga boshqa sinfning barcha xususiyatlarini “meros qilib olish” imkonini beradi. Bu kod takrorlanishini keskin kamaytiradi va sinflarni mantiqiy iyerarxiyaga soladi. “Talaba” va “O’qituvchi” — ikkovi ham “Inson”, demak umumiy xususiyatlarni “Inson”dan meros oladi.
Merosxo’rlik — bir sinf (bola/hosila) boshqa sinf (ota/asosiy) ning a’zolarini o’zlashtirishi. C#’da bu ikki nuqta (
:) orqali amalga oshiriladi.
Asosiy va bola sinf
C#’da meros class Bola : Ota shaklida yoziladi. Umumiy Inson va undan meros oluvchi Talaba ni ko’ramiz:
using System;
class Inson
{
public string Ism;
public void Tanishtir()
{
Console.WriteLine($"Men {Ism}");
}
}
class Talaba : Inson
{
public int Ball;
}
Talaba t = new Talaba();
t.Ism = "Master Sherkulov"; // Inson dan meros
t.Ball = 95; // o'ziniki
t.Tanishtir(); // Inson metodini ishlatadi
Console.WriteLine($"Ball: {t.Ball}");
Men Master Sherkulov
Ball: 95
Talaba sinfi Ism maydonini va Tanishtir() metodini Inson dan meros oldi, ustiga Ball maydonini qo’shdi. Bir marta yozilgan kod qayta ishlatildi.
base — ota sinfga murojaat
Bola sinf ota sinf konstruktoriga base orqali murojaat qiladi:
using System;
class Inson
{
public string Ism;
public Inson(string ism) { Ism = ism; }
}
class Talaba : Inson
{
public int Ball;
public Talaba(string ism, int ball) : base(ism) // ota konstruktorini chaqiradi
{
Ball = ball;
}
}
Talaba t = new Talaba("Farrux", 90);
Console.WriteLine($"{t.Ism}: {t.Ball}");
Farrux: 90
: base(ism) ota sinf konstruktorini chaqirdi, so’ng biz Ball ni qo’shdik. Bu merosning eng ko’p ishlatiladigan naqshi.
Metodni qayta yozish (override)
Bola sinf ota metodini qayta yozishi mumkin. Buning uchun ota metod virtual, bola metod override deb belgilanadi:
using System;
class Inson
{
public virtual void Rol()
{
Console.WriteLine("Oddiy inson");
}
}
class Oqituvchi : Inson
{
public override void Rol()
{
Console.WriteLine("O'qituvchi");
}
}
new Inson().Rol();
new Oqituvchi().Rol();
Oddiy inson
O'qituvchi
Bir xil nomli Rol metodi ikki sinfda turlicha ishladi. virtual va override — bu metod qayta yozilishini bildiruvchi kalit so’zlar.
Xulosa
Bu bo’limda merosxo’rlikni, : bilan asosiy va bola sinf munosabatini, base orqali ota sinfga murojaat va virtual/override bilan metodni qayta yozishni ko’rib chiqdik. Meros kodni qayta ishlatishni yangi darajaga olib chiqadi. Keyingi darsda polimorfizmga o’tamiz.