Java Polymorphism

Java Polymorphism: Định Nghĩa và Ví Dụ

Trong lập trình hướng đối tượng, Polymorphism (đa hình) là một trong những khái niệm then chốt. Đa hình cho phép các đối tượng thuộc các lớp khác nhau có thể xử lý các phương thức tương tự nhau nhưng theo những cách khác nhau. Điều này không chỉ giúp việc phát triển phần mềm trở nên linh hoạt hơn mà còn cải thiện khả năng bảo trì và mở rộng của mã nguồn.

Định Nghĩa Polymorphism

Polymorphism là khả năng một biến, hàm hoặc đối tượng có thể ở nhiều dạng khác nhau. Trong Java, có hai loại đa hình chính:

  • Polymorphism tại thời điểm biên dịch (Compile-time polymorphism): Còn được gọi là Overloading. Điều này xảy ra khi hai hoặc nhiều hàm cùng tên nhưng có tham số khác nhau trong cùng một lớp.
  • Polymorphism tại thời điểm chạy (Run-time polymorphism): Còn được gọi là Overriding. Điều này xảy ra khi một phương thức trong lớp con ghi đè một phương thức cùng tên trong lớp cha.

Cú Pháp Polymorphism

Dưới đây là cú pháp cơ bản cho hai loại đa hình:

1. Đa hình tại thời điểm biên dịch (Method Overloading)

public class MathOperation {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

2. Đa hình tại thời điểm chạy (Method Overriding)

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

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

Ví Dụ Về Polymorphism

Ví Dụ 1: Đa hình tại thời điểm biên dịch

public class PolymorphismExample {
    public static void main(String[] args) {
        MathOperation math = new MathOperation();
        System.out.println("Sum of integers: " + math.add(10, 20));
        System.out.println("Sum of doubles: " + math.add(10.5, 20.5));
    }
}

Ví Dụ 2: Đa hình tại thời điểm chạy

public class PolymorphismExample {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.sound(); // Output: Dog barks
    }
}

Kết Luận

Polymorphism là một trong những khía cạnh mạnh mẽ nhất của lập trình hướng đối tượng trong Java. Nó cho phép các lập trình viên viết mã linh hoạt và dễ dàng mở rộng. Bằng việc áp dụng đa hình cho các lớp và phương thức, bạn có thể cải thiện tính tổ chức và khả năng tái sử dụng mã, từ đó tạo ra những ứng dụng Java có cấu trúc tốt hơn.