Vivasoft-logo

ডাউনকাস্টিং (Downcasting) কি এবং কেন এটা ক্ষতিকর?

একটি parent ক্লাস থেকে একটি চাইল্ড class তৈরি করা কেই ডাউনকাস্টিং পদ্ধতি বলে। এটি ক্ষতিকারক কারণ এটি রান টাইমে ব্যর্থ হতে পারে এবং এর কোন গ্যারান্টি নেই যে parent আসলে child class এর সমস্ত সদস্য রয়েছে৷ সুতরাং, রানটাইমে এটি ব্যর্থ হওয়ার একটি উচ্চতর সম্ভাবনা রয়েছে। ফলস্বরূপ, যে কোনও মূল্যে এই ডাউনকাস্টিং এড়িয়ে চলুন।

downcasting

লিংকঃ http://tpcg.io/_P8BVJZ

//জাভা (Java) – Downcasting
class Animal {
  void printName(String name) {
    System.out.println(“The name of the animal is ” + name);
  }
}
class Dog extends Animal {
  void printBreed(String breed) {
    System.out.println(“The breed of the dog is ” + breed);
  }
}
public class DowncastingExample {
  public static void main(String[] args) {
    Animal a = new Animal();
    // This will cause a compile-time warning and a runtime exception
    // Dog d = (Dog) a;
    // d.printBreed(“Labrador”); // Error: java.lang.ClassCastException
    Animal b = new Dog();
    if (b instanceof Dog) {
      Dog e = (Dog) b;
      e.printBreed(“Poodle”);
    }
    a.printName(“Tommy”);
    b.printName(“Rex”);
  }
}

Output:

//জাভা (Java) – Output
The breed of the dog is Poodle
The name of the animal is Tommy
The name of the animal is Rex

লিংকঃ https://dotnetfiddle.net/OQkWkc

//সি# (C#)
using System;
class Animal
{
    public void PrintName(string name)
    {
        Console.WriteLine(“The name of the animal is ” + name);
    }
}
class Dog : Animal
{
    public void PrintBreed(string breed)
    {
        Console.WriteLine(“The breed of the dog is ” + breed);
    }
}
public class DowncastingExample
{
    public static void Main(string[] args)
    {
        Animal a = new Animal();
        // This will cause a compile-time error
        // Dog d = (Dog) a;
        // d.PrintBreed(“Labrador”); // Error: Cannot implicitly convert type ‘Animal’ to ‘Dog’
        Animal b = new Dog();
        if (b is Dog)
        {
            Dog e = (Dog) b;
            e.PrintBreed(“Poodle”);
        }
        a.PrintName(“Tommy”);
        b.PrintName(“Rex”);
    }
}

Output:

//Output – আউটপুট
The breed of the dog is Poodle
The name of the animal is Tommy
The name of the animal is Rex