Java Tính đa hình
Giới Thiệu Polymorphism
Polymorphism (Đa hình) là một trong những khái niệm cơ bản và quan trọng trong lập trình hướng đối tượng (OOP). Nó cho phép một đối tượng có thể thực hiện các hành động khác nhau dựa trên ngữ cảnh cụ thể. Polymorphism giúp mã nguồn linh hoạt và dễ bảo trì hơn.
Polymorphism là gì?
Polymorphism có nghĩa là "nhiều hình thái". Trong Java, Polymorphism cho phép một phương thức hoặc một đối tượng có thể hành xử khác nhau tùy thuộc vào cách chúng được gọi. Có hai loại Polymorphism chính trong Java:
Compile-time Polymorphism (Đa hình khi biên dịch): Được thực hiện thông qua Method Overloading (Nạp chồng phương thức).
Runtime Polymorphism (Đa hình khi chạy): Được thực hiện thông qua Method Overriding (Ghi đè phương thức).
Compile-time Polymorphism
Compile-time Polymorphism hay Method Overloading xảy ra khi nhiều phương thức trong cùng một lớp có cùng tên nhưng khác nhau về tham số (số lượng hoặc kiểu dữ liệu).
Cú pháp Method Overloading
Ví dụ minh họa Method Overloading
Trong ví dụ trên, lớp MathOperation
có ba phương thức add()
với cùng tên nhưng khác nhau về tham số.
Runtime Polymorphism
Runtime Polymorphism hay Method Overriding xảy ra khi một lớp con cung cấp cách triển khai cụ thể cho một phương thức đã được định nghĩa trong lớp cha. Điều này cho phép một đối tượng lớp con được xử lý như thể nó là đối tượng của lớp cha.
Cú pháp Method Overriding
Ví dụ minh họa Method Overriding
Trong ví dụ trên, phương thức sound()
được ghi đè trong các lớp con Dog
và Cat
.
Lợi ích của Polymorphism
Polymorphism giúp tăng tính linh hoạt và mở rộng của ứng dụng bằng cách cho phép một đối tượng thực hiện các hành động khác nhau dựa trên ngữ cảnh cụ thể. Điều này giúp mã nguồn dễ bảo trì và mở rộng hơn.
Ví dụ minh họa
Trong ví dụ này, phương thức draw()
được ghi đè trong các lớp con Circle
và Rectangle
. Đối tượng Shape
có thể tham chiếu đến đối tượng của lớp con và gọi phương thức ghi đè tương ứng.
Bài tập thực hành
Bài tập 1: Method Overloading
Tạo một lớp Calculator
với các phương thức multiply()
để nhân hai số nguyên, hai số thực và ba số nguyên.
Bài tập 2: Method Overriding
Tạo hai lớp Bird
và Sparrow
kế thừa từ lớp Bird
. Ghi đè phương thức fly()
trong lớp Sparrow
.
Bài tập 3: Polymorphism với kế thừa
Tạo ba lớp Employee
, Manager
, và Developer
. Lớp Employee
có phương thức work()
. Ghi đè phương thức này trong các lớp Manager
và Developer
.
Qua các bài tập trên, hy vọng các bạn đã hiểu rõ hơn về khái niệm Polymorphism trong Java, cách sử dụng các từ khóa và các phương thức liên quan. Hãy tiếp tục thực hành để nâng cao kỹ năng lập trình của mình.
Last updated