Vorislik asoslari




Download 25,59 Kb.
bet1/2
Sana07.02.2024
Hajmi25,59 Kb.
#152880
  1   2
Bog'liq
C# dasturlash tilida Vorislik


VORISLIK ASOSLARI
Vorislik OYDning asosiy nuqtalaridan biridir. Voris(meros) orqali bir sinf boshqa sinfning funksionalligini egallashi mumkin.Aytaylik, bizda individual shaxsni tavsiflovchi quyidagi Person klassi mavjud:
class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public void Display()
{
Console.WriteLine(Name);
}
Ammo kutilmaganda bizga korxona ishchisini - "Employee sinfini" tavsiflovchi sinf kerak bo'ldi. Ushbu sinf Person sinfi bilan bir xil funktsiyani amalga oshirishi sababli, xodim ham shaxs bo'lganligi sababli, o'z navbatida baza deb ataladigan Person sinfining hosilasi (yoki voris yoki sinf osti) bo'lish uchun Xodimlar sinfini yaratish oqilona bo'ladi. O`z navbatida Person sinfi bazaviy sinf yoki ajdod (yoki superklass):
class Employee : Person
{
}

Ikki nuqtadan so'ng biz ushbu sinf uchun asosiy sinfni ko'rsatamiz. Employee sinfi uchun Person asosiy hisoblanadi va shu sababli Employee klassi Person sinfidagi barcha bir xil xususiyatlarni, usullarni, maydonlarni voris qilib oladi. Vorisga o'tmaydigan yagona narsa bu asosiy sinf konstruktorlari.


Shunday qilib, voris is-a (is) munosabatini amalga oshiradi, Empl.oyee sinfining ob'ekti ham Person sinfining ob'ekti hisoblanadi:


static void Main(string[] args)
{
Person p = new Person { Name = "Tom"};
p.Display();
p = new Employee { Name = "Sam" };
p.Display();
Console.Read();
}
Employee ob'ekti ham Person ob'ekti bo'lgani uchun biz o'zgaruvchini quyidagicha aniqlashimiz mumkin: Person p = new Employee ().

Odatda barcha sinflar Obje-ct asosiy sinfidan voris olishadi, hatto biz aniq voris o'rnatmasak ham. Shuning uchun, yuqorida tavsiflangan Person va Employee sinflari, o'zlarining uslublaridan tashqari, Ob'ektlar sinfining usullariga ham ega bo'ladi: ToString (), Equals (), GetHashCode () va GetType ().


Barcha sinflar avtomatik ravishda voris qilib olinishi mumkin. Biroq, bir qator cheklovlar mavjud:

Ko'p vorisni qo'llab-quvvatlamaydi, sinf faqat bitta sinfdan voris olishi mumkin.


Hosil qilingan sinfni yaratishda, asosiy sinfga kirish turini ko'rib chiqing - olingan sinfga kirish turi asosiy sinf bilan bir xil yoki cheklangan bo'lishi kerak. Ya'ni, agar asosiy sinf in_ternal kirish turiga ega bo'lsa, u holda olingan sinf inte_rnal yoki priv_ate kirish turiga ega bo'lishi mumkin, ammo p_ublic emas.


Shu bilan birga, shuni ham yodda tutish kerakki, agar asosiy va hosil qilingan sinf har xil to'plamlarda (loyihalarda) bo'lsa, unda bu holda hosil bo'lgan sinf faqat p_ublic modifikatoriga ega bo'lgan sinfdan voris olishi mumkin.


Agar s_ealed modifikatori bilan sinf e'lon qilingan bo'lsa, u holda bu sinf voris qilib olinmaydi va hosilaviy sinflarni yaratish mumkin emas. Masalan, quyidagi sinf avlodlarni yaratishga yo'l qo'ymaydi:


sealed class Admin
{
}
statik sinfdan sinfni voris qilib olinmaydi.

Download 25,59 Kb.
  1   2




Download 25,59 Kb.