24-mavzu. Polimorfizm


Download 126.11 Kb.
bet2/7
Sana18.10.2023
Hajmi126.11 Kb.
#1707595
1   2   3   4   5   6   7
Bog'liq
30-maruza

8.13-listing
using System;
namespace app30_overriding
{
public class A
{
private int a; // Maydon
private int b;
// Xossa
public int A_a
{
get { return a; }
set { a = value; }
}
public int A_b
{
get { return b; }
set { b = value; }
}
// Konstruktorlar
public A() { }
public A(int a, int b)
{ this.a = a; this.b = b; }
// Virtual metod
public virtual int M_A()
{ return (a + b); }
}
internal class B : A
{
private int a;
private int b;
private int c;
// Xossa
public int C_c
{
get { return c; }
set { c = value; }
}
// Konstruktor (Bazali sinfning qaysi konstrukto-riga murojaatni ko'rsatadi)
public B(int aa, int bb, int cc)
: base(aa, bb)
{
a = aa; b = bb; c = cc;
}
/* Bazali sinfda qayta aniqlanuvchi metod: U "c" maydonini kvadratga ko'taradi va natijani oldingi metodning (A sinfidagi) natijasiga qo'shadi.*/
public override int M_A()
{
return (base.M_A() + c * c);
}
}
internal class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Qayta aniqlanuvchi metodning natijasi");
B b_b = new B(5, 6, 7);
Console.WriteLine("Ona-sinfdagi birinchi maydon — {0}\nOna-sinfdagi ikkinchi maydon — {1}", b_b.A_a, b_b.A_b);
Console.WriteLine("Hosilaviy sinf maydonining qiymati —{0}\nQayta aniqlanuvchi metod natijasi — {1}", b_b.C_c, b_b.M_A());
}
}

8.7-rasm. Qayta aniqlanuvchi metodni ishlatish
}

Polimorfizm


Polimorfizm "ko'p shakllar" degan ma'noni anglatadi va bizda meros bo'yicha bir-biriga bog'liq bo'lgan ko'plab sinflar mavjud bo'lganda paydo bo'ladi.
Oldingi bobda aytib o'tganimizdek; Meros bizga boshqa sinfdan maydonlar va usullarni meros qilib olish imkonini beradi. Polimorfizm bu usullardan turli vazifalarni bajarish uchun foydalanadi. Bu bizga bitta harakatni turli yo'llar bilan bajarishga imkon beradi.
Masalan, AnimalSound() deb nomlangan usulga ega Animal deb nomlangan asosiy sinfni o'ylab ko'ring. Hayvonlarning olingan sinflari cho'chqalar, mushuklar, itlar, qushlar bo'lishi mumkin - shuningdek, ular hayvonlarning o'ziga xos ovoziga ega (cho'chqa go'shti, mushuk miyovlari va boshqalar):
class Animal // Base class (parent)
{
public void animalSound()
{
Console.WriteLine("The animal makes a sound");
}
}

class Pig : Animal // Derived class (child)


{
public void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}

class Dog : Animal // Derived class (child)


{
public void animalSound()
{
Console.WriteLine("The dog says: bow wow");
}
}
Meros bo'limidan biz sinfdan meros olish uchun : belgisidan foydalanishimizni unutmang.
Endi biz Pig va Dog obyektlarini yaratishimiz va ularning ikkalasida animalSound() usulini chaqirishimiz mumkin:
class Animal // Base class (parent)
{
public void animalSound()
{
Console.WriteLine("The animal makes a sound");
}
}

class Pig : Animal // Derived class (child)


{
public void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}

class Dog : Animal // Derived class (child)


{
public void animalSound()
{
Console.WriteLine("The dog says: bow wow");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
}
}
The output will be:
The animal makes a sound
The animal makes a sound
The animal makes a sound

Download 126.11 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




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