7. Inheritance — وراثت
Difficulty: Intermediate — متوسط
Time: ~25 minutes
The Concept — تصور
Inheritance lets one class reuse the code of another. The child class gets all the methods and properties of the parent, and can add its own or override existing ones.
اردو: وراثت سے بچہ کلاس والد کلاس کا سارا کوڈ پاتا ہے۔ نئے طریقے شامل کر سکتا ہے یا پرانے بدل سکتا ہے۔
Basic Inheritance — بنیادی ورا��ت
کلاس گاڑی {
تعمیر(ماڈل, سال) {
یہ.ماڈل = ماڈل;
یہ.سال = سال;
}
معل��مات() {
واپس `${یہ.سال} ${یہ.ماڈل}`;
}
}
کلاس الیکٹرک_گاڑی توسیع گاڑ�� {
تعمیر(ماڈل, سال, بیٹری_کلومیٹر) {
سپر(ماڈل, سال);
یہ.بیٹری = بیٹری_کلومیٹر;
}
معلومات() {
واپس `${سپر.معلومات()} — بیٹری: ${یہ.بیٹری} km`;
}
}
متغیر ٹیسلا = نیا الیکٹرک_گاڑی("Tesla Model 3", 2024, 500);
لکھو(ٹیسلا.معلومات()); // 2024 Tesla Model 3 — بیٹری: 500 km
اردو:
توسیعسے وراثت۔سپر(...)والد کاتعمیرچلاتا ہے۔سپر.طریقہ()سے والد کا طریقہ استعمال کریں۔
Multi-Level Inheritance — کئی سطحی وراثت
کلاس جانور {
تعمیر(نام) {
یہ.نام = نام;
}
سانس_لو() {
لکھو(`${یہ.نام} سانس لے رہا ہے`);
}
}
ک��اس ممالیہ توسیع ج��نور {
دودھ_دو() {
لکھو(`${یہ.نام} دودھ دیتا ہے`);
}
}
کلاس انسان توسیع ممالیہ {
تعمیر(نام, پیشہ) {
سپ��(نام);
یہ.پیشہ = پیشہ;
}
کام_کرو() {
لکھو(`${یہ.نام} ${یہ.پیشہ} ہے`);
}
}
متغیر شخص = نیا ��نسان("احمد", "استاد");
شخص.سانس_لو(); // inherited from جانور
شخص.دودھ_دو(); // inherited from ممالیہ
شخص.��ام_کرو(); // own method
Polymorphism — کثیر الشکلی
Different classes respond to the same method name in different ways:
کلاس شکل {
تع��یر(نام) {
یہ.نام = نام;
}
��قبہ() {
واپس 0;
}
}
کلاس مربع توسیع شکل {
ت��میر(ضلع) {
سپر("مربع");
یہ.ضلع = ضلع;
}
رقبہ() {
واپس یہ.ضلع ** 2;
}
}
کلاس دائرہ توسیع شکل {
تعمیر(رداس) {
سپر("دائرہ");
یہ.رداس = رداس;
}
رقبہ() {
واپس ریاضی.پائی * یہ.رداس ** 2;
}
}
متغیر شکلیں = [نیا مربع(5), نیا دائرہ(3), نیا مربع(4)];
کے_لیے (متغیر ش میں شکلی��) {
لکھو(`${ش.نام}: ${گول(ش.رقبہ(), 2)}`);
}
Output:
اردو: کثیر الشکلی — ایک ہی طریقہ نام مختلف کلاسوں میں مختلف کام کرتا ہے۔ یہ کوڈ لچکدار بناتا ہے۔
Calling Parent Methods — والد کے طریقے
Use سپر.طریقہ() to call the parent's version:
کلاس پرندہ {
تعمیر(نام) {
یہ.نام = نام;
}
توضیح() {
واپس `${یہ.نام} ایک پرندہ ہ��`;
}
}
کلاس طوطہ توسیع ��رندہ {
توضیح() {
واپس سپر.توضیح() + " اور بات کر سکتا ہے";
}
}
متغیر ط = نیا طوطہ("میٹھو");
لکھو(ط.توضیح()); // میٹھو ایک ��رندہ ہے اور بات کر ��کتا ہے
Key Points — اہم نکات
کلاس بچہ توسیع والد— child class inherits from parentسپر(args)inتعمیر— calls parent constructor (required before usingیہ)سپر.طریقہ()— calls the parent's version of a method- Child class can add new methods and override existing ones
- Polymorphism: different classes, same method name, different behavior
اردو:
توسیعوراثت دیتا ہے۔سپروالد کا تعمیر یا طریقہ چلاتا ہے۔ ایک ہی نام مختلف کلاسوں میں مختلف کام — کثیر الشکلی۔