مرکزی مواد پر جائیں
ماڈیول 6 · سبق 1 از 2کورس میں 13/18~12 min
ماڈیول اسباق (1/2)

C++ میں وراثت

وراثت آبجیکٹ اورینٹڈ پروگرامنگ (OOP) کے اہم ستونوں میں سے ایک ہے۔ یہ ایک نئی کلاس (جسے ماخوذ یا چائلڈ کلاس کہا جاتا ہے) کو کوڈ کے دوبارہ استعمال کو فروغ دیتے ہوئے، موجودہ کلاس (بیس یا پیرنٹ کلاس کہا جاتا ہے) سے ممبران (صفات اور طریقے) کو وراثت میں لینے کی اجازت دیتا ہے۔

بنیادی نحو

C++ میں، اخذ شدہ کلاس کے نام کے بعد : آپریٹر کا استعمال کرتے ہوئے وراثت کی وضاحت کی جاتی ہے، اس کے بعد رسائی کی وضاحت کنندہ (عام طور پر public) اور بیس کلاس کا نام ہوتا ہے۔

C++
class Shape {
public:
    void setColor(std::string c) {
        color = c;
    }
protected:
    std::string color; // Accessible by derived classes
};

// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
    double getArea() {
        return width * height;
    }
private:
    double width {0.0};
    double height {0.0};
};

رسائی کا تعین کنندہ: protected

public اور private کے ساتھ، وراثت protected وضاحت کنندہ کو متعارف کراتی ہے:

  • private بیس کلاس کے ممبران ماخوذ کلاس سے براہ راست نہیں قابل رسائی ہیں۔
  • protected بیس کلاس کے اراکین باہر سے ناقابل رسائی ہیں، لیکن اخذ کردہ کلاسوں کے اندر براہ راست قابل رسائی ہیں۔

بیس کلاس کا آغاز

کنسٹرکٹرز خود بخود وراثت میں نہیں ملتے ہیں۔ اخذ شدہ کلاس کو انسٹینٹیٹ کرتے وقت، بیس کلاس کنسٹرکٹر کو پہلے کہا جاتا ہے۔ اگر بیس کلاس کو دلائل کی ضرورت ہے، تو ہمیں اسے اخذ کردہ کنسٹرکٹر کی ممبر ابتدائی فہرست میں واضح طور پر پکارنا چاہیے۔

C++
class Parent {
public:
    Parent(int x) {
        std::cout << "Parent: " << x << std::endl;
    }
};

class Child : public Parent {
public:
    // Explicit call to Parent constructor
    Child(int x, int y) : Parent(x) {
        std::cout << "Child: " << y << std::endl;
    }
};

خود ہی آزمائیں۔

ورزش#cpp.m6.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

ایک ڈاگ کلاس بنائیں جو عوامی طور پر جانوروں کی کلاس سے وراثت میں ملتی ہے۔ ڈاگ کلاس میں ایک عوامی پلے() طریقہ شامل ہونا چاہیے جو std::cout کا استعمال کرتے ہوئے 'Playing' پرنٹ کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

بیس کلاس کو بڑھانے کے لیے `:` نحو کے بعد `پبلک اینیمل` کا استعمال کریں، پھر `play()` طریقہ لکھیں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#cpp.m6.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

گاڑی سے وراثت حاصل کرکے کار کی کلاس مکمل کریں۔ کار کے لیے ایک کنسٹرکٹر لکھیں جو std::string b کو قبول کرے اور اسے ممبر انیشیلائزر لسٹ کے ذریعے وہیکل کنسٹرکٹر کو بھیجے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

'کار' کنسٹرکٹر میں، برانڈ کی ابتداء کو بیس کلاس میں تفویض کرنے کے لیے پیرامیٹر قوسین کے فوراً بعد نحو کا استعمال کریں: گاڑی(b)'۔

3 کوششوں کے بعد حل دستیاب ہے۔