Tính đa Hình Trong Java - Quá Trình Overriding Một Phương Thức
Có thể bạn quan tâm
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
- Đa hình lúc thực thi ( overriding )
- Các ví dụ về overriding trong java
- Đa hình lúc thực thi ( overriding )
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
Oto running- 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
class Car{ public int run(){ System.out.println("Car running..."); return 0; } } class Oto extends Car { public void run(){ System.out.println("Oto running"); } } class Test{ public static void main(String[] args){ Car A = new Oto(); A.run(); } }- 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
class Car{ int a = 10; } class Oto extends Car { int a = 20; } class Test{ public static void main(String[] args){ Car A = new Oto(); System.out.println(A.a); } }10
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 !
Từ khóa » Cách Tính đa Hình Trong Java
-
Tính đa Hình Trong Java - Học Java Miễn Phí Hay Nhất - VietTuts
-
Tính đa Hình (polymorphism) Trong Java - Góc Học IT
-
Tính đa Hình (Polymorphism) Trong Java - GP Coder (Lập Trình Java)
-
Tính đa Hình (Polymorphism) Trong Java - Freetuts
-
Java Bài 30: Đa Hình (Polymorphism) - Yellow Code Books
-
[Tự Học Java] Tính đa Hình Trong Java »
-
Tính đa Hình Trong OOP - KungFu Tech
-
Đa Hình Trong Java - Hoclaptrinh
-
Tính đa Hình Trong Java | Codelearn
-
Thừa Kế Và đa Hình Trong Java - Openplanning
-
Tính đa Hình Trong Java - Lập Trình Từ Đầu
-
Java: Đa Hình (Polymorphism) | V1Study
-
Đa Hình Trong Java - Nắm Vững Khái Niệm đa Hình Java
-
Đa Hình Tại Runtime Trong Java - Viblo