CodeGym /جاوا بلاگ /Random-UR /جاوا میں کنسٹرکٹر چیننگ
John Squirrels
سطح
San Francisco

جاوا میں کنسٹرکٹر چیننگ

گروپ میں شائع ہوا۔

کنسٹرکٹر چیننگ کیا ہے؟

جاوا میں کنسٹرکٹر ایک مخصوص طریقہ ہے جو کلاس کی آبجیکٹ تخلیق میں استعمال ہوتا ہے۔ جب بھی کلاس کی کوئی چیز بنائی جاتی ہے تو کنسٹرکٹر کو پکارا جاتا ہے۔ یہ تخلیق کے وقت آبجیکٹ کی خصوصیات کو قدریں تفویض کرنے کے لیے استعمال کیا جا سکتا ہے۔ مختلف پیرامیٹر کی فہرستوں کے ساتھ جاوا کلاس میں متعدد کنسٹرکٹرز ہوسکتے ہیں۔ کنسٹرکٹر چیننگ کا استعمال آبجیکٹ کی تخلیق کے وقت ایک ہی کلاس/پیرنٹ کلاس کے کنسٹرکٹرز کے مختلف نفاذ کے لیے کیا جاتا ہے۔

جاوا میں کنسٹرکٹر چیننگ کو کیسے لاگو کیا جاتا ہے؟

کنسٹرکٹر کو کال کرنے کے طریقہ پر مبنی کنسٹرکٹرز کو زنجیر لگانے کے دو طریقے ہیں۔ وہ درج ذیل ہیں۔
  • اس () کلیدی لفظ کا استعمال کرتے ہوئے - ایک ہی کلاس کے کنسٹرکٹرز کو کال کرنے کے لیے
  • super() کلیدی لفظ کا استعمال کرتے ہوئے - پیرنٹ کلاس کے کنسٹرکٹرز کو کال کرنے کے لیے
اس کی وضاحت درج ذیل مثالوں میں کی گئی ہے۔جاوا میں کنسٹرکٹر چیننگ - 1

کنسٹرکٹر چیننگ مثال #1 - کنسٹرکٹرز کو اس () کلیدی لفظ کا استعمال کرتے ہوئے جکڑے ہوئے ہیں۔

ہم نے DerivedClass کے لیے چار کنسٹرکٹرز کا اعلان کیا ہے۔ ایک بغیر دلائل کے اور دوسرے تین مختلف دلائل کے ساتھ۔ ہر کنسٹرکٹر کے اندر، یہ () کلیدی لفظ اسی کلاس کے اگلے کنسٹرکٹر کو کال کرنے کے لیے استعمال ہوتا ہے۔
package com.tutorialwriting.constchaining;

public class DerivedClass{

    String firstName;
    String country;
    int age;

    public DerivedClass() {
        // calling one argument constructor
        this("Maggie");
    }

    public DerivedClass(String firstName) {
        // calling two argument constructor
        this(firstName, 15);
    }

    public DerivedClass(String firstName, int age) {
        // calling three argument constructor
        this(firstName, age, "Australia");
    }

    public DerivedClass(String firstName, int age, String country) {
        this.firstName = firstName;
        this.age = age;
        this.country = country;
    }

    void displayValues() {
        System.out.println("First Name : " + firstName);
        System.out.println("Country : " + country);
        System.out.println("Age : " + age);
    }

    public static void main(String args[]) {
        DerivedClass object = new DerivedClass();
        object.displayValues();
    }
}
پھانسی کی پیداوارجاوا میں کنسٹرکٹر چیننگ - 2

کنسٹرکٹر چیننگ مثال #2 - کنسٹرکٹرز کو super() کلیدی لفظ کا استعمال کرتے ہوئے زنجیروں میں جکڑا جاتا ہے۔

یہاں، چائلڈ کلاس سپر() کلیدی لفظ کا استعمال کرتے ہوئے پیرنٹ کلاس کے کنسٹرکٹرز کو کال کرتی ہے ۔ بیس کلاس میں تین کنسٹرکٹرز ہیں۔ بغیر دلائل والا کنسٹرکٹر اس () کو استعمال کرتے ہوئے BaseClass کے تین آرگیومینٹ کنسٹرکٹر میں سے ایک کو کال کرتا ہے ۔
package com.tutorialwriting.constchaining;

public class BaseClass {

    public BaseClass() {
        //calling a three argument constructor of the same class
        this("Male", "English", "1989/11/10");
        System.out.println("I'm executed third!!!");
    }

    public BaseClass(String firstName, String surname, int idNo) {
        System.out.println("I'm executed first!");
        System.out.println("First name : " + firstName);
        System.out.println("Surname : " + surname);
        System.out.println("ID Number : " + idNo);
    }

    public BaseClass(String gender, String nationality, String birthDate) {
        System.out.println("I'm executed second!!");
        System.out.println("Gender : " + gender);
        System.out.println("Nationality : " + nationality);
        System.out.println("Birth Date : " + birthDate);
    }

}
DerivedClass کے دو کنسٹرکٹرز ہیں، ہر ایک super() کا استعمال کرتے ہوئے سپر کلاس کے مختلف کنسٹرکٹرز کو کال کرتا ہے ۔
package com.tutorialwriting.constchaining;

public class DerivedClass extends BaseClass {

    public DerivedClass() {
        //calling no argument constructor of the super class
        super();
    }

    public DerivedClass(String firstName, String surname, int idNo) {
        //calling three argument constructor of the super class
        super(firstName, surname, idNo);
    }

    public static void main(String args[]) {
        DerivedClass object2 = new DerivedClass("Paul", "Wilson", 123456);
        DerivedClass object1 = new DerivedClass();
    }
}
پھانسی کی پیداوارجاوا میں کنسٹرکٹر چیننگ - 3

مضمر بمقابلہ واضح کنسٹرکٹر کالنگ

جاوا میں کنسٹرکٹرز کو کال کرنے کے دو مختلف طریقے ہیں: ایمپلیسیٹ کالنگ اور ایکسپلیسیٹ کالنگ۔
  • واضح کالنگ سے مراد اس() یا super() کا استعمال کرتے ہوئے کوڈ میں واضح طور پر کنسٹرکٹرز کو کال کرنا ہے ۔
  • مضمر کالنگ سے مراد چائلڈ کلاس کنسٹرکٹر کی طرف سے اس طرح کی واضح کال کی عدم موجودگی پر واضح طور پر سپر کلاس کے غیر دلیل کنسٹرکٹر کو کال کرنا ہے۔ دوسرے الفاظ میں، کمپائلر سپر() کال کو چائلڈ کلاسز کے کنسٹرکٹرز میں سے کسی کی پہلی لائن کے طور پر شامل کرتا ہے اگر پروگرامر واضح طور پر کوڈ میں super() کو کال نہیں کرتا ہے۔

ہمیں کنسٹرکٹر چیننگ کی ضرورت کیوں ہے؟

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

نتیجہ

اس ٹیوٹوریل میں، ہم نے جاوا میں کنسٹرکٹر چیننگ پر بات کی۔ کنسٹرکٹرز میتھڈ نما کوڈ سیگمنٹ ہیں جو آبجیکٹ بناتے وقت استعمال کیے جاتے ہیں۔ جاوا کلاس میں مختلف پیرامیٹر کی فہرستوں کے ساتھ کنسٹرکٹرز کی تعداد ہوسکتی ہے۔ کنسٹرکٹر چیننگ کلاس کی ایک مثال کے ساتھ مختلف ابتداء کو سنبھالنے کا ایک آسان طریقہ ہے۔ اس ٹیوٹوریل سے نوٹ کرنے کے لیے کچھ اہم نکات ذیل میں درج ہیں۔
  • اگر پروگرامر اسے واضح طور پر کوڈ میں شامل نہیں کرتا ہے، تو کمپائلر جاوا کلاس میں عوامی نون آرگومنٹ کنسٹرکٹر کو شامل کرتا ہے۔ اسے ڈیفالٹ کنسٹرکٹر کہا جاتا ہے۔
  • this() اور super() کو کنسٹرکٹر کی پہلی لائن کے طور پر لکھا جانا چاہیے۔
  • this() کو ایک ہی کلاس کے کنسٹرکٹرز کو کال کرنے کے لیے استعمال کیا جاتا ہے جبکہ super() کو فوری سپر کلاس کے کنسٹرکٹرز کو کال کرنے کے لیے استعمال کیا جاتا ہے۔
  • کلاس کے اندر کم از کم ایک کنسٹرکٹر ہونا چاہیے جس میں یہ () کلیدی لفظ شامل نہ ہو۔
  • اگر واضح طور پر شامل نہیں کیا جاتا ہے تو، کمپائلر ہر چائلڈ کلاس کنسٹرکٹر کو بغیر دلیل کے سپر() کال کا اضافہ کرتا ہے۔ اس سے کلاسوں کو درست طریقے سے شروع کرنے میں مدد ملے گی۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION