|
using System;
class Tayanch
{
// Tayanch sinfda virtual metod yaratish
public
|
bet | 3/11 | Sana | 17.05.2024 | Hajmi | 114,28 Kb. | | #239885 |
Bog'liq KURS IWIusing System;
class Tayanch
{
// Tayanch sinfda virtual metod yaratish
public virtual void Funksiya()
{
Console.WriteLine("Tayanch sinfidagi Funksiya() metodi");
}
}
class Voris1 : Tayanch
{
// Tayanch sinfdagi Funksiya() metodini bekor qilish
public override void Funksiya()
{
Console.WriteLine("Voris1 sinfidagi Funksiya() metodi");
}
} class Voris2 : Tayanch
{
// Voris2 sinfda Funksiya() metodini qayta belgilash
public override void Funksiya()
{
Console.WriteLine("Voris2 sinfidagi Funksiya() metodi");
}
}
class OverrideDemo
{
static void Main()
{
Tayanch baza = new Tayanch();
Voris1 d1 = new Voris1();
Voris2 d2 = new Voris2();
baza.Funksiya();
baza = d1;
baza.Funksiya();
baza = d2;
baza.Funksiya();
Console.ReadKey();
}
}
Kodni ishga tushirish natijasi
Tayanch sinfidagi Funksiya() metodi
Voris1 sinfidagi Funksiya() metodi
Voris2 sinfidagi Funksiya() metodi
Yuqoridagi misol Tayanch sinfini va undan voris olingan ikkita Voris1 va Voris2 sinfni yaratadi. Tayanch sinfi Funksiya() virtual metodini e'lon qiladi, bu ikkala voris sinfda ham bekor qilinadi. Main() metodida Tayanch, Voris1 va Voris2 turidagi obyektlar e'lon qilinadi. Tayanch mos havola turidagi baza o‘zgaruvchisi e'lon qilinadi. Har bir obyekt turiga havola baza o‘zgaruvchisiga tayinlanadi va keyin Funksiya() metodini chaqirish uchun ishlatiladi. Yuqoridagi kodning natijasidan ko‘rinib turibdiki, bajarilayotgan Funksiya() metodining versiyasi baza o‘zgaruvchisining sinf turiga qarab emas, balki ushbu metodga havola qilingan obyekt turiga qarab aniqlanadi.
Lekin virtual metodni bekor qilish shart emas. Agar voris sinf virtual metodning versiyasini taqdim etmasa, unda quyidagi misolda bo‘lgani kabi uning tayanch sinfdagi versiyasi ishlatiladi.
|
| |