24-mavzu. Polimorfizm
Download 126.11 Kb.
|
30-maruza
- Bu sahifa navigatsiya:
- 8.7-rasm. Qayta aniqlanuvchi metodni ishlatish } Polimorfizm
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling