Ngày 1: Đa hình (Polymorphism).
Trong lập trình hướng đối tượng, đa hình (polymorphism) là khả năng một đối tượng có thể có nhiều hình dạng, đây là một trong bốn tính chất cơ bản của OOP bên cạnh Tính Kế thừa (Inheritance), Tính Bao đóng (Encapsulation), Tính Trừu tượng (Abstraction). Một ví dụ đơn giản về Polymorphism trong Java:
“`java
class Animal {
void speak() {
System.out.println(“The animal speaks”);
}
}
class Cat extends Animal {
void speak() {
System.out.println(“The cat meows”);
}
}
class Dog extends Animal {
void speak() {
System.out.println(“The dog barks”);
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myCat = new Cat();
Animal myDog = new Dog();
myAnimal.speak();
myCat.speak();
myDog.speak();
}
}
“`
Trường hợp đặc biệt là Java cũng hỗ trợ Polymorphism qua interface.
Câu hỏi ôn tập:
1. Đa hình (Polymorphism) trong Java dùng để làm gì?
– Trả lời: Đa hình (Polymorphism) cho phép một đối tượng có thể được xem như là một đối tượng của một lớp parent.
2. Đa hình (Polymorphism) có liên quan gì đến kế thừa (inheritance) không?
– Trả lời: Đa hình và kế thừa đi đôi với nhau. Kế thừa cho phép class kế thừa các thuộc tính và phương thức của class khác, còn đa hình cho phép lớp con có thể thay đổi hoặc mở rộng các phương thức được kế thừa từ lớp cha.
3. Đa hình tĩnh (static polymorphism) và đa hình động (dynamic polymorphism) trong Java có gì khác nhau?
– Trả lời: Đa hình tĩnh (Compile-time Polymorphism) xảy ra tại thời điểm biên dịch, thực hiện qua cơ chế Overloading. Đa hình động (Runtime Polymorphism) xảy ra tại thời điểm chạy, thực hiện qua cơ chế Overriding.
4. Liệt kê và giải thích hai loại đa hình trong Java?
– Trả lời: Hai loại đa hình trong Java là đa hình tĩnh và đa hình động. Đa hình tĩnh (Compile-time polymorphism) được thực hiện thông qua overloading (cùng tên method nhưng số lượng hoặc kiểu dữ liệu của tham số khác nhau). Đa hình động (Run-time polymorphism) được thực hiện thông qua overriding (phương thức lớp con ghi đè phương thức của lớp cha).
5. Tại sao nên sử dụng đa hình trong lập trình?
– Trả lời: Sử dụng đa hình giúp nâng cao tính linh hoạt và tái sử dụng code, từ đó giúp giảm số lượng code và nâng cao hiệu suất của chương trình.