Tính đa hình trong java

0
311
This entry is part 21 of 29 in the series Tự học lập trình Java

Bài viết hôm nay mình sẽ giới thiệu đến các bạn một tính chất quan trọng trong lập trình hướng đối tượng đó là tính đa hình trong java.

Tính đa hình trong java

Tính đa hình ( Polymorphism ) là một khái niệm mà chúng ta có thể thực hiện một công việc bằng nhiều cách khác nhau. Có hai kiểu đa hình trong java đó là đa hình lúc thực thi ( runtime ) và đa hình trong lúc biên dịch ( compile ).

  • Đa hình lúc biên dịch ( compile ) gọi là overloading.
  • Đa hình lúc thực thi ( runtime ) gọi là overriding.

Đa hình lúc thực thi ( overriding )

  • Overriding 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 một biến tham chiếu của lớp cha.

Quá trình này gọi là Upcasting.

Các ví dụ về overriding trong java

  • Ví dụ này ta tạo ra hai lớp là Car và Oto . Lớp Oto kế thừa lớp Car và ghi đè phương thức run() của nó. Chúng ta gọi phương thức run bởi biến tham chiếu của lớp Car. Khi nó tham chiếu tới đối tượng của lớp con ( lớp Oto) và phương thức lớp con ghi đè phương thức của lớp cha, phương thức lớp con được gọi lúc runtime. Quá trình ghi đè phương thức trên gọi là overriding.

Sau khi chạy chương trình trên ta có kết quả sau

  • Lưu ý là quá trình quá trình ghi đè lúc runtime ( hay overriding ) chỉ xảy ra với các phương thức giống nhau về tham số và kiểu trả về. Các thuộc tính của đối tượng cha không thể bị ghi đè.

Xét ví dụ sau

  • Biên dịch chương trình trên sẽ bị lỗi.

Xét một ví dụ khác để chứng minh không thể overriding cho các thành viên dữ liệu ta xét ví dụ sau

 

Như vậy thuộc tính a của lớp cha không thể bị ghi đè.

Bài viết của mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

Series Navigation<< Tính kế thừa trong ngôn ngữ javaLớp và đối tượng trong java >>
avatar
  Subscribe  
Notify of