Upcasting và Downcasting Trong Java

Upcasting và Downcasting Trong Java

Trong lập trình hướng đối tượng của Java, Upcasting và Downcasting là hai khái niệm quan trọng liên quan đến việc chuyển đổi giữa các lớp con và lớp cha. Hãy cùng tìm hiểu về những khái niệm quan trọng này cùng với ví dụ minh họa.

I. Upcasting (Ép Kiểu Lên)

Upcasting là quá trình chuyển đổi một đối tượng từ lớp con lên lớp cha trong cây kế thừa.

				
					class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Barking...");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // Upcasting
        animal.sound(); // Kết quả: "Animal makes a sound"
    }
}

				
			

II. Downcasting (Ép Kiểu Xuống)

Downcasting là quá trình chuyển đổi một đối tượng từ lớp cha xuống lớp con trong cây kế thừa.

				
					class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Barking...");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // Upcasting

        // Downcasting
        if (animal instanceof Dog) {
            Dog dog = (Dog) animal;
            dog.bark(); // Kết quả: "Barking..."
        }
    }
}

				
			

III. Sự Quan Trọng của Upcasting và Downcasting

Upcasting cho phép bạn truy cập các phương thức và thuộc tính của lớp cha từ một đối tượng của lớp con.
Downcasting cần sử dụng instanceof để kiểm tra xem đối tượng có phải là của lớp con không trước khi thực hiện chuyển đổi, giúp tránh lỗi at runtime.