মেথড ওভাররাইডিং (Method Overriding) সি শার্প (C#) এ একটি প্রক্রিয়া, যা ইনহেরিটেন্সের ক্ষেত্রে ব্যবহার করা হয়। মেথড ওভাররাইডিংয়ের মাধ্যমে বেস ক্লাসের একটি মেথডকে ডেরাইভড ক্লাসে পুনরায় সংজ্ঞায়িত করা যায়। এটি তখনই সম্ভব হয় যখন বেস ক্লাসের মেথডটিকে virtual
হিসেবে চিহ্নিত করা হয় এবং ডেরাইভড ক্লাসে সেই মেথডটিকে override
কীওয়ার্ড দিয়ে ওভাররাইড করা হয়।
virtual
কীওয়ার্ডvirtual
কীওয়ার্ড ব্যবহার করে বেস ক্লাসের একটি মেথডকে ওভাররাইডযোগ্য হিসেবে চিহ্নিত করা হয়।virtual
মেথড ডেরাইভড ক্লাসে ওভাররাইড করার জন্য প্রস্তুত থাকে, অর্থাৎ ডেরাইভড ক্লাস ঐ মেথডটিকে তার নিজস্ব পদ্ধতিতে ইমপ্লিমেন্ট করতে পারে।override
কীওয়ার্ডoverride
কীওয়ার্ড ব্যবহার করে ডেরাইভড ক্লাসে বেস ক্লাসের virtual
মেথডকে পুনরায় সংজ্ঞায়িত করা হয়।নিচে একটি উদাহরণ দেওয়া হলো, যেখানে Animal
নামের একটি বেস ক্লাস এবং Dog
নামের একটি ডেরাইভড ক্লাস তৈরি করা হয়েছে। Animal
ক্লাসের Sound
মেথডটি virtual
হিসেবে চিহ্নিত করা হয়েছে এবং Dog
ক্লাসে Sound
মেথডটি ওভাররাইড করা হয়েছে।
using System;
// বেস ক্লাস
class Animal
{
public virtual void Sound()
{
Console.WriteLine("Animals make sound");
}
}
// ডেরাইভড ক্লাস
class Dog : Animal
{
public override void Sound()
{
Console.WriteLine("Dogs bark");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal();
myAnimal.Sound(); // Output: Animals make sound
Dog myDog = new Dog();
myDog.Sound(); // Output: Dogs bark
// পলিমরফিজমের মাধ্যমে
Animal animalDog = new Dog();
animalDog.Sound(); // Output: Dogs bark (ওভাররাইডেড মেথড কল হবে)
}
}
Animals make sound
Dogs bark
Dogs bark
এখানে, Animal
ক্লাসের Sound
মেথডটি virtual
হিসেবে ঘোষণা করা হয়েছে এবং Dog
ক্লাসে Sound
মেথডটিকে override
করা হয়েছে। ফলে Animal
টাইপের অবজেক্ট Dog
ইনস্ট্যান্স হিসেবে ব্যবহার করলেও Dog
এর ওভাররাইড করা মেথডটি কল হবে।
নিচে Shape
নামের একটি বেস ক্লাস এবং তার দুটি ডেরাইভড ক্লাস Circle
ও Rectangle
তৈরি করা হয়েছে, যেখানে Draw
মেথডটি বিভিন্নভাবে ওভাররাইড করা হয়েছে।
using System;
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape.");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle.");
}
}
class Program
{
static void Main(string[] args)
{
Shape myShape;
myShape = new Shape();
myShape.Draw(); // Output: Drawing a shape.
myShape = new Circle();
myShape.Draw(); // Output: Drawing a circle.
myShape = new Rectangle();
myShape.Draw(); // Output: Drawing a rectangle.
}
}
Drawing a shape.
Drawing a circle.
Drawing a rectangle.
এখানে Shape
ক্লাসে Draw
মেথডটি virtual
হিসেবে ঘোষণা করা হয়েছে এবং Circle
ও Rectangle
ক্লাসে এটি override
করা হয়েছে। ফলে পলিমরফিজমের মাধ্যমে বিভিন্ন অবজেক্টে Draw
মেথড ভিন্ন ভিন্ন আউটপুট প্রদর্শন করেছে।
virtual
কীওয়ার্ড ব্যবহার করে বেস ক্লাসে মেথডকে ওভাররাইডযোগ্য হিসেবে চিহ্নিত করা হয়।override
কীওয়ার্ড ব্যবহার করে ডেরাইভড ক্লাসে বেস ক্লাসের মেথডকে নতুনভাবে ইমপ্লিমেন্ট করা হয়।আরও দেখুন...