× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Đa hình trong Java - Nắm vững khái niệm đa hình Java

14/04/2021 03:02

Đa hình là một yếu tố không thể thiếu trong lập trình hướng đối tượng Java. Những ngôn ngữ chỉ  hỗ trợ lớp mà không hỗ trợ đa hình không thể gọi là ngôn ngữ hướng đối tượng. Java là ngôn ngữ đối tượng nên nó có hỗ trợ đa hình. Trong bài viết này bạn sẽ tìm hiểu về đa hình trong Java với các ví dụ minh họa cụ thể.

 

Khái niệm tính đa hình trong Java

Đa hình - hay còn gọi là Polymorphism,  từ Polymorphism có thể được chia thành hai từ - "poly" có nghĩa là "nhiều" và "morph" có nghĩa là "các dạng". Vì vậy, đa hình có nghĩa là nhiều hình thức. Đa hình trong Java (Polymorphism) là một khái niệm mà chúng ta có thể thực hiện một hành động bằng nhiều cách khác nhau. Nói cách khác, đa hình là khái niệm cho phép một đối tượng của một lớp hoạt động khác nhau để phản hồi lại một thông điệp hoặc hành động.

Khái niệm tính đa hình trong Java

Khái niệm tính đa hình trong Java

Ví dụ trong đời sống về tính đa hình trong Java

Một nhân viên bảo vệ bên ngoài một tổ chức sẽ có cách cư xử khác với những người khác nhau khi họ vào tổ chức. Anh ta có thể có cách ứng xử khác nhau khi Sếp đến so với khi nhân viên đến. Ở đây, ta có thể thấy hành vi của người bảo vệ có nhiều hình thức khác nhau, điều này phụ thuộc vào những thành viên mà anh ta sẽ tiếp đón.

Một ví dụ khác là âm thanh của động vật. Chúng ta có thể có một phương pháp chung âm thanh nhưng với phương pháp này, chúng ta đang sử dụng âm thanh của các loài động vật khác nhau. Âm thanh của phương pháp sẽ hoạt động khác nhau đối với các loài động vật khác nhau.

Ví dụ về đa hình trong Java

Ví dụ về đa hình trong Java

Tiếp theo, chúng ta sẽ thảo luận về cách đa hình được triển khai trong Java và các kiểu đa hình cùng với các ví dụ của chúng là gì.

Các loại đa hình trong Java

Có hai kiểu đa hình trong Java

Các loại đa hình trong Java

Các loại đa hình trong Java

Đa hình tĩnh Static/ Compile - Time trong Java

Khi trình biên dịch quyết định phân tích đa hình trong quá trình biên dịch, chúng ta có thể gọi tính đa hình này là đa hình trong thời gian biên dịch hoặc đa hình tĩnh. Trong Java chúng ta có thể thực hiện hoặc đạt được tính đa hình trong thời gian biên dịch với sự hỗ trợ của phương thức nạp chồng.

Phương thức nạp chồng trong Java

Khi một lớp có hai hoặc nhiều hơn hai phương thức có cùng tên nhưng khác kiểu thứ tự hoặc số lượng tham số, nó sẽ được gọi là phương thức nạp chồng (Overloading method). Java cho phép một hàm có cùng tên nếu nó có thể phân biệt được chúng bằng số lượng và kiểu đối số. Ví dụ, các hàm dưới đây đều khác nhau trong Java:

  1. float divide(int a, int b){...}
  2. float divide( float x, float y){...}
  3. float divide (float a,int b) {...}

Trong ví dụ trên hàm divide () nhận hai đối số int khác với hàm divide () nhận hai đối số float và cũng từ hàm split() nhận cả hai đối số int và float. 

>>> Đọc thêm: JVM máy chủ ảo Java - Tìm hiểu nhanh về JVM và kiến trúc JVM

Đa hình Động Dynamic/ Run - Time trong Java

Đa hình động hay đa hình trong runtime là đa hình giải quyết các hành động tại thời gian chạy chứ không phải thời gian biên dịch được gọi. Hay nói cách khác Đa hình lúc runtime là quá trình gọi phương thức đã được ghi đè trong thời gian thực thi chương trình. Trong quá trình này, một phương thức được ghi đè được gọi thông qua biến tham chiếu của một lớp cha.

Trong lập trình hướng đối tượng, việc ghi đè phương thức xảy ra khi một lớp dẫn xuất cung cấp một định nghĩa cụ thể về phương thức đã có trong lớp cha của nó.

Tại sao nên sử dụng Đa hình trong Java

Với đa hình trong Java, bạn có thể viết một phương thức xử lý chính xác với nhiều loại chức năng khác nhau với cùng tên. Đa hình cũng cho phép đạt được sự nhất quán trong code của bạn.

Ví dụ:

Giả sử bạn cần thực thi phương thức aniamalSound() của cả Dog và Cat. Để làm như vậy, chúng ta có thể tạo một lớp với tên “Animal” và mở rộng hai lớp con là Dog và Cat từ nó. Trong trường hợp này, bạn nên tạo một phương thức có cùng tên là animalSound() trong cả hai lớp con này hơn là tạo phương thức có tên khác.

>>> Tham khảo: Khóa học lập trình Java

Ưu điểm của Đa hình trong Java

  • Tính đa hình cho phép một lớp cha xác định các phương thức chung cho tất cả các lớp dẫn xuất của nó trong khi cho phép các lớp con chỉ định việc triển khai bổ sung của một số hoặc tất cả các phương thức đó.
  • Ghi đè phương thức được hỗ trợ bởi tính đa hình động, một khía cạnh chính của tính đa hình liên kết động hoặc thời gian chạy.
  • Tính đa hình cung cấp khả năng cho một phương pháp thực hiện những việc khác nhau trên cơ sở đối tượng mà nó đang tác động.

Kết luận: Tính đa hình là một trong những tính năng thiết yếu nhất của lập trình hướng đối tượng. Mọi lập trình viên Java nên làm quen với đa hình để trở thành một chuyên gia về Java.

Trong bài viết này, chúng ta đã hiểu được tầm quan trọng của đa hình, khái niệm ví dụ và một số ưu điểm của tính đa hình. Hy vọng bạn thấy bài viết trên có ích trong quá trình làm việc với Java. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại t3H.