Tính kế thừa (Inheritance) trong Java

Tính kế thừa (Inheritance) trong Java được hiểu là một lớp con (subclass) có thể kế thừa tất cả những thuộc tính và phương thức của lớp cha. Từ khóa extends và implements được sử dụng để khai báo kế thừa trong Java.

1. Khái niệm tính kế thừa (Inheritance) trong Java:

– Một khi sử dụng kế thừa sẽ giúp bạn tái sử dụng mã nguồn, xây dựng lớp (class) mới ngoài việc phát triển những tính năng mới thì bạn cũng có thể kế thừa những gì mà lớp cũ đã xây dựng.

– Sử dụng từ khóa extends để khai báo kế thừa (Inheritance) trong Java.

– Trong Java không hỗ trợ đa kế thừa, đa kế thừa sẽ dẫn đến vấn đề “Diamond Problem”.

– Lớp con có thể ghi đè (Overriding) các phương thức đã định nghĩa trong lớp cha.

2. Ví dụ về tính kế thừa (Inheritance) trong Java

Tính kế thừa (Inheritance) trong Java được thể hiện thông qua sử dụng từ khóa  extends

Ví dụ tính kế thừa (Inheritance) trong Java:

kenhlaptrinh-tinh-ke-thua-inheritance-trong-java

Nhìn hình trên bạn thấy thì lớp Shape là lớp cha và các lớp  DotSquare và  Circle là các lớp con kế thừa từ lớp  Shape. Như vậy để có thể sử dụng kế thừa (Inheritance) trong Java thì các lớp Dot, Square và Circle phải extends lớp Shape.

Trong lớp Shape có một phương thức dùng để tính diện tích của một hình  area() thế nên khi các lớp Dot, Square và Circle thừa kế lớp Shape mà có phương thức giống phương thức lớp cha (phương thức phải cùng tên, cùng tham số như lớp cha) được gọi là ghi đè (Overriding).

Bây giờ chúng ta sẽ cụ thể hóa ví dụ trên bằng mã nguồn Java. Đầu tiên, bạn tạo lớp Shape.java và trong lớp này chúng ta có phương thức  area() dùng để tính diện tích một hình.

Lớp Shape.java

Tiếp theo, chúng ta tạo các lớp Dot.java, Square.javaCircle.java và các lớp này cũng có phương thức  area() như lớp cha. Tuy nhiên ở đây bạn sẽ thấy công thức tính diện tích hình tròn hay hình vuông sẽ khác nhau.

Có nghĩa là trong từng trường hợp, hoàn cảnh khác nhau thì đối tượng có hình thái khác nhau tuỳ thuộc vào từng ngữ cảnh, mà ở đây cụ thể là đối với mỗi hình sẽ có công thức tính diện tích khác nhau, đây chính là tính đa hình (Polymorphism) trong Java.

Bạn còn nhớ công thức tính diện tích hình tròn, hình vuông hay một điểm không? Diện tích hình tròn sẽ luôn luôn bằng không, diện tích hình vuông bằng cạnh x cạnh và diện tích hình tròn bằng PI x 2 lần bán kính.

Lớp Dot.java

Lớp Square.java

Lớp Circle.java

Bây giờ, bạn tạo lớp Main.java

Kết quả sau khi chạy lệnh trên:

Lời kết: Ngoài tính kế thừa (Inheritance) trong Java thì bạn có thể xem thêm các bài viết về tính đóng gói (Encapsulation), tính đa hình (Polymorphism) và tính trừu tượng (Abstraction) trong chuyên mục Java cơ bản.

(Tác giả: Tùng Dương)

Bình luận

Loading...