C#'da virtual metodlar va xossalar



Download 74,99 Kb.
bet3/3
Sana29.12.2021
Hajmi74,99 Kb.
#78684
1   2   3
Bog'liq
Virtual metodlar

static void Main(string[] args)

{

Person p1 = new Person("Bill");



p1.Display(); // Person klassidagi Display metodi chaqirilmoqda

Employee p2 = new Employee("Tom", "Microsoft");

p2.Display(); // Person klassidagi Display metodi chaqirilmoqda

Console.ReadKey();

}

Konsoldagi natija:



Bill

Tom


Lekin virtual metodni qayta e'lon qilish ham mumkin. Buning uchun bola klassda qayta e'lon qilinishi kerak bo'lgan metod override modifikatori bilan belgilanadi, bunda u ota klassdagi kabi parametrlarga ega bo'lishi zarur:

class Employee : Person

{

public string Company { get; set; }



public Employee(string name, string company)

: base(name)

{

Company = company;



}

public override void Display()

{

Console.WriteLine($"{Name} {Company}da ishlaydi");



}

}

Endi aynan yuqoridagi obyekt olinsa:



static void Main(string[] args)

{

Person p1 = new Person("Bill");



p1.Display(); // Person klassidagi Display metodi chaqirilmoqda

Employee p2 = new Employee("Tom", "Microsoft");

p2.Display(); // Employee klassidagi Display metodi chaqirilmoqda

Console.ReadKey();

}

Konsoldagi natija:



Bill

Tom Microsoftda ishlaydi

Ota klass virtual metodi butun tuzilmani ko'rinishini aniqlaydi. Ya'ni shu ota klassdan to'g'ridan-to'g'ri meros olmasdan hosil qilingan ota klass avlodlarida virtual metodni qayta e'lon qilish mumkin. Masalan, Manager klassini tuzish mumkin, u Employee klassidan meros olishi mumkin. Va unda Display metodi qayta e'lon qilinishi mumkin.

Virtual metodlarni qayta e'lon qilishda bir nechta cheklovlarni hisobga olish kerak:



  • Virtual va qayta e'lon qilingan metodlar bir xil ruxsat modifikatori bilan belgilangan bo'lishi kerak, ya'ni, agar virtual metod public modifikatori bilan e'lon qiligan bo'lsa, avlod klasslarda shu metod public modifikatori bilan qayta e'lon qilinishi kerak;

  • Static metodlarni virual modifikatori bilan e'lon qilish yoki qayta e'lon qilish mumkin emas.

Xossalarni qayta e'lon qilish

Metodlar kabi xossalarni ham qayta e'lon qilish mumkin:



class Credit

{

public virtual decimal Sum { get; set; }

}

class LongCredit : Credit

{

private decimal sum;



public override decimal Sum

{

get

{

return sum;

}

set

{

if(value > 1000)

{

sum = value;



}

}

}



}

class Program

{

static void Main(string[] args)

{

LongCredit credit = new LongCredit { Sum = 6000 };



credit.Sum = 490;

Console.WriteLine(credit.Sum);

Console.ReadKey();

}

}



base kalit so'zi

Konstruktorlardan tashqari base kalit so'zi orqali ota klassning boshqa elementlariga murojaat qilish mumkin. Bizning holda base.Display(); Person klassdagi Display metodi chaqiriladi:



class Employee : Person

{

public string Company { get; set; }



public Employee(string name, string company)

:base(name)

{

Company = company;



}

public override void Display()

{

base.Display();

Console.WriteLine($"{Company}da ishlaydi");

}

}



Metodlarni qayta e'lon qilishni taqiqlash

Ba'zi hollarda qayta e'lon qilishni taqiqlash zarur bo'lishi mumkin. Bunda sealed modifikatoridan foydalanish kerak bo'ladi:



class Employee : Person

{

public string Company { get; set; }



public Employee(string name, string company)

: base(name)

{

Company = company;



}

public override sealed void Display()

{

Console.WriteLine($"{Name} {Company}da ishlaydi");



}

}

sealed modifikatori bilan yaratilinadigan metodlarda bir jihat inobatga olish kerak, sealed faqatgina override bilan birga qo'llanilishi mumkin. Ya'ni sealed'dan faqat qayta e'lon qilinayotgan metodlarda foydalanish mumkin. Va bunda Employee klassdan meros olgan klasslarda Display metodini qayta e'lon qila olmaymiz.
Download 74,99 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish