Sobes.tech
Junior

Dasturlashda polimorfizm nima?

sobes.tech AI

AIdan javob

Polimorfizm — bu turli sinflardan bo'lgan obyektlarning bir xil metod chaqiruviga turli tarzda javob berish qobiliyatidir. Bu meros olish, abstrakt sinflar va interfeyslar yordamida amalga oshiriladi. C# da polimorfizm asosiy sinf metodlarini voris sinflarda qayta yozish (overriding) va metodlarni ortiqcha yuklash (overloading) orqali namoyon bo'ladi.

Polimorfizm misollari:

  1. Metodlarni qayta yozish (Runtime Polimorfizm): Voris sinf, asosiy sinfda e'lon qilingan metodning o'zining amalga oshirishini taqdim etadi. Buning uchun, asosiy sinfda virtual kalit so'zi ishlatiladi, voris sinfda esa override.

    // Asosiy sinf
    class Shape
    {
        // Qayta yozilishi mumkin bo'lgan virtual metod
        public virtual void Draw()
        {
            // Standart amalga oshirish
        }
    }
    
    // Voris sinf 1
    class Circle : Shape
    {
        // Draw metodini qayta yozish
        public override void Draw()
        {
            // Doira uchun amalga oshirish
        }
    }
    
    // Voris sinf 2
    class Square : Shape
    {
        // Draw metodini qayta yozish
        public override void Draw()
        {
            // Kvadrat uchun amalga oshirish
        }
    }
    

    Bu holda, Shape obyektlar ro'yxatini yaratish va har biri uchun Draw metodini chaqirish mumkin, va har bir figura turi uchun aniq amalga oshirish chaqiriladi.

  2. Metodlarni ortiqcha yuklash (Compile-time Polimorfizm): Bir xil nomli, lekin imzosi (parametrlar soni yoki turlari) turli bo'lgan bir nechta metodlar.

    class Calculator
    {
        // Ortib yozilgan Add metodi (int uchun)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Ortib yozilgan Add metodi (double uchun)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polimorfizm, yanada moslashuvchan, kengaytiriladigan va oson texnik xizmat ko'rsatadigan kod yaratishga yordam beradi. Bu, turli tiplardagi obyektlar bilan ishlashga imkon beradigan umumiy kod yozishga imkon beradi.