কম্পিউটার টিউটোরিয়াল

C#-তে চাইল্ড ক্লাস থেকে বেস ক্লাস কনস্ট্রাক্টর কল করা

C#-এ কনস্ট্রাক্টর চেইনিংয়ের জন্য দুটি কীওয়ার্ড ব্যবহৃত হয়:

  • this — একই ক্লাসের অন্য কনস্ট্রাক্টর কল করতে
  • base — পেরেন্ট (বেস) ক্লাসের কনস্ট্রাক্টর কল করতে

সিনট্যাক্স

// বেস কনস্ট্রাক্টর কল
public ChildClass(parameters) : base(baseParameters) {
    // চাইল্ড কনস্ট্রাক্টর বডি
}

উদাহরণ: বেস ক্লাস কনস্ট্রাক্টর কল

class DemoBase {
    public DemoBase(int firstNumber, int secondNumber, int thirdNumber) {
        Console.WriteLine("Base class Constructor");
        Console.WriteLine($"{firstNumber} {secondNumber} {thirdNumber}");
    }
}

class Demo : DemoBase {
    public Demo(int firstNumber, int secondNumber, int thirdNumber) 
        : base(firstNumber, secondNumber, thirdNumber) {
        Console.WriteLine("Derived class Constructor");
        Console.WriteLine($"{firstNumber} {secondNumber} {thirdNumber}");
    }
}

class Program {
    static void Main() {
        Demo obj = new Demo(1, 2, 3);
        Console.ReadLine();
    }
}

আউটপুট:

Base class Constructor
1 2 3
Derived class Constructor
1 2 3

নিয়ম ও ব্যবহারিক টিপস

  1. অর্ডার: বেস কনস্ট্রাক্টর প্রথমে রান হয়, তারপর ডেরাইভড কনস্ট্রাক্টর
  2. ডিফল্ট বেস কনস্ট্রাক্টর: যদি বেস ক্লাসে প্যারামিটারহীন কনস্ট্রাক্টর থাকে, তবে : base() লিখতে হয় না (অটোমেটিক কল হয়)
  3. প্যারামিটারহীন বেস কনস্ট্রাক্টর নাই: যদি বেস ক্লাসে শুধু প্যারামিটারযুক্ত কনস্ট্রাক্টর থাকে, তবে চাইল্ড ক্লাসে বাধ্যতামূলক : base(...) কল করতে হবে
  4. this() vs base(): একসাথে ব্যবহার করা যায় না (দুটোই কনস্ট্রাক্টর ইনিশিয়ালাইজারের অংশ)

উদাহরণ: this() এবং base() একসাথে (আলাদা কনস্ট্রাক্টরে)

class Base {
    public Base(string name) { Name = name; }
    public string Name { get; }
}

class Derived : Base {
    public int Age { get; }
    
    // কনস্ট্রাক্টর ১: base কল
    public Derived(string name) : base(name) { }
    
    // কনস্ট্রাক্টর ২: this কল (কনস্ট্রাক্টর ১-কে), যা base কল করবে
    public Derived(string name, int age) : this(name) {
        Age = age;
    }
}

সাধারণ ভুল

// ❌ ভুল: বেস কনস্ট্রাক্টর বডির ভিতরে কল করা যায় না
class Child : Base {
    public Child() {
        base(); // Error: 'base' must be used in constructor initializer
    }
}

// ✅ সঠিক: কনস্ট্রাক্টর ইনিশিয়ালাইজারে
class Child : Base {
    public Child() : base() { }
}
  1. C++ থেকে জাভাস্ক্রিপ্ট ফাংশন কীভাবে কল করবেন?

  2. Chrome কনসোল থেকে জাভাস্ক্রিপ্ট ফাংশন কীভাবে কল করবেন?

  3. জাভাস্ক্রিপ্ট দিয়ে এলিমেন্ট থেকে ক্লাস নাম মুছে ফেলা

  4. ম্যাক থেকে ফোন কল করার পদ্ধতি