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

জাভাতে Widening Casting (Implicit) এবং Narrowing Casting (Explicit) এর পার্থক্য কী?


জাভাতে টাইপ কাস্টিং ব্যবহার করা হয় এক টাইপের অবজেক্ট বা ভেরিয়েবলকে অন্য টাইপে কনভার্ট করার জন্য। যখন আমরা একটি ডেটা টাইপকে অন্য ডেটা টাইপে কনভার্ট বা অ্যাসাইন করি, তারা কম্প্যাটিবল নাও হতে পারে। যদি কম্প্যাটিবল হয় তবে সুমথলি হয় অন্যথায় ডেটা লসের চান্স থাকে।

জাভাতে টাইপ কাস্টিং-এর প্রকার

জাভা টাইপ কাস্টিং দুটি প্রকারে বিভক্ত।

  • Widening Casting (Implicit) – অটোমেটিক টাইপ কনভার্সন
  • Narrowing Casting (Explicit) – এক্সপ্লিসিট কনভার্সন প্রয়োজন

Widening Casting (ছোট থেকে বড় টাইপ)

Widening Type Conversion হয় যদি দুটি টাইপ কম্প্যাটিবল হয় এবং টার্গেট টাইপ সোর্স টাইপের চেয়ে বড় হয়। Widening Casting তখন হয় যখন দুটি টাইপ কম্প্যাটিবল হয় এবং টার্গেট টাইপ সোর্স টাইপের চেয়ে বড় হয়।

উদাহরণ ১

public class ImplicitCastingExample {
    public static void main(String args[]) {
        byte i = 40;
        // নিচের কনভার্সনের জন্য কোনো কাস্টিং প্রয়োজন নেই
        short j = i;
        int k = j;
        long l = k;
        float m = l;
        double n = m;
        System.out.println("byte value : "+i);
        System.out.println("short value : "+j);
        System.out.println("int value : "+k);
        System.out.println("long value : "+l);
        System.out.println("float value : "+m);
        System.out.println("double value : "+n);
    }
}

আউটপুট

byte value : 40
short value : 40
int value : 40
long value : 40
float value : 40.0
double value : 40.0

ক্লাস টাইপের Widening Casting

নিচের উদাহরণে, Child ক্লাস ছোট টাইপ, আমরা এটিকে Parent ক্লাস টাইপে অ্যাসাইন করছি যা একটি বড় টাইপ, তাই কোনো কাস্টিং প্রয়োজন নেই।

উদাহরণ ২

class Parent {
    public void display() {
        System.out.println("Parent class display() called");
    }
}
public class Child extends Parent {
    public static void main(String args[]) {
        Parent p = new Child();
        p.display();
    }
}

আউটপুট

Parent class display() method called

Narrowing Casting (বড় থেকে ছোট টাইপ)

যখন আমরা একটি বড় টাইপকে ছোট টাইপে অ্যাসাইন করি, Explicit Casting প্রয়োজন।

উদাহরণ ১

public class ExplicitCastingExample {
    public static void main(String args[]) {
        double d = 30.0;
        // নিচের কনভার্সনের জন্য এক্সপ্লিসিট কাস্টিং প্রয়োজন
        float f = (float) d;
        long l = (long) f;
        int i = (int) l;
        short s = (short) i;
        byte b = (byte) s;
        System.out.println("double value : "+d);
        System.out.println("float value : "+f);
        System.out.println("long value : "+l);
        System.out.println("int value : "+i);
        System.out.println("short value : "+s);
        System.out.println("byte value : "+b);
    }
}

আউটপুট

double value : 30.0
float value : 30.0
long value : 30
int value : 30
short value : 30
byte value : 30

ক্লাস টাইপের Narrowing

যখন আমরা বড় টাইপকে ছোট টাইপে অ্যাসাইন করি, তবে আমাদের এক্সপ্লিসিটলি টাইপকাস্ট করতে হয়।

উদাহরণ ২

class Parent {
    public void display() {
        System.out.println("Parent class display() method called");
    }
}
public class Child extends Parent {
    public void display() {
        System.out.println("Child class display() method called");
    }
    public static void main(String args[]) {
        Parent p = new Child();
        Child c = (Child) p;
        c.display();
    }
}

আউটপুট

Child class display() method called
  1. জাভাতে JRadioButton এবং JCheckBox-এর পার্থক্য কী?

  2. জাভাতে JTextField এবং JTextArea-এর পার্থক্য কী?

  3. জাভাতে JFrame এবং JDialog-এর পার্থক্য কী?

  4. জাভাতে GridLayout এবং GridBagLayout-এর পার্থক্য কী?