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

Kế thừa trong Java - 5 phút tìm hiểu các loại kế thừa trong Java

16/04/2021 03:03

Kế thừa trong Java là một trong những yếu tố mà bất kỳ lập trình viên Java nào cũng cần hiểu rõ. Trong bài viết này chúng ta sẽ tìm hiểu về khái niệm kế thừa trong Java và tìm hiểu các loại kế thừa cũng như tầm quan trọng của kế thừa trong lập trình Java

 

Một số loại kế thừa trong Java

Một số loại kế thừa trong Java

Khái niệm kế thừa trong Java

Kế thừa là một trong những khái niệm quan trọng nhất trong chương trình hướng đối tượng, Đây là khả năng mà một lớp có thể kế thừa khả năng hoặc thuộc tính từ một lớp khác trong Java. Ví dụ, chúng ta là con người và chúng ta được thừa kế những thuộc tính thuốc lớp “Con người” như khả năng nói, thở và ăn uống,...Trong bài viết này, chúng ta sẽ tìm hiểu sâu hơn về kế thừa trong Java với một số ví dụ cụ thể. 

Ví dụ về kế thừa trong Java

Chúng ta có thể lấy ví dụ về ô tô để minh họa cho tính kế thừa của Java. Lớp “Ô tô” sẽ kế thừa các thuộc tính từ “Xe hơi”, lớp “Xe hơi” sẽ kế thừa các thuộc tính từ lớp “ Xe cộ”. Ngôn ngữ hướng đối tượng thể hiện tính kế thừa từ một lớp khác. Do đó, mô hình của những ngôn ngữ này thực tế và gần gũi hơn nhiều.

Tại sao nên sử dụng kế thừa trong Java

Có một số  lý do vì sao nên sử dụng kế thừa trong lập trình Java:

  • Khả năng thể hiện các mối quan hệ kế thừa đảm bảo sự gần gũi với các mô hình trong thế giới thực.
  • Một lý do khác là khả năng tái sử dụng. Khi sử dụng tính kế thừa ta có thể lấy một lớp mới từ một lớp hiện có và thêm tính năng mới vào nó mà không cần sửa đổi lớp cha và viết lại lớp cha để kế thừa nó.
  • Một lý do khác là tính chất bắc cầu. Nếu lớp một kế thừa các thuộc tính từ một lớp B, sau đó tất cả các lớp con của A sẽ tự động kế thừa từ B. Tính chất này được gọi là tính chất bắc cầu của kế thừa.

Các yếu tố quan trọng trong kế thừa trong Java

Class (Lớp): Lớp là một kiểu dữ liệu do người dùng định nghĩa trong Java về cơ bản là một nhóm các đối tượng. Nó là một bản thiết kế hoặc mẫu mà từ đó chúng ta tạo ra các đối tượng.

Super Class:  Lớp mà các tính năng và chức năng đang được kế thừa hoặc sử dụng được gọi là lớp cha hoặc lớp cơ sở hoặc lớp cha.

The extends keyword: Lớp kế thừa các thuộc tính và tính năng từ một lớp khác được gọi là lớp con hoặc lớp dẫn xuất hoặc lớp mở rộng hoặc lớp con. Lớp con có thể thêm các tính năng và chức năng của riêng nó ngoài các trường và phương thức của lớp cha hoặc lớp cha của nó.

 The super keyword: Từ khóa super tương tự như từ khóa này. Sau đây là một số trường hợp chúng tôi sử dụng từ khóa super:

  • Có một số tình huống mà các thành viên của lớp cha và lớp con có tên giống nhau, khi đó từ khóa super được sử dụng để phân biệt các thành viên của lớp cha với các thành viên của lớp con.
  • Để gọi hàm tạo lớp cha từ lớp con.

>>> Đọc thêm: Ngày giờ trong Java - Tìm hiểu cách tạo ngày giờ trong Java

Cú pháp sử dụng kế thừa trong Java:

Chúng ta đã biết rằng để kế thừa một lớp, chúng ta sử dụng từ khóa expand. Cú pháp của việc sử dụng kế thừa trong Java là:

 

class BaseClass

{

   //methods and fields

}

class DerivedClass extends BaseClass

{

   //methods and fields

}

Các loại kế thừa trong Java

Từ sơ đồ trên, chúng ta có thể thấy rằng có năm kiểu kế thừa có thể dùng trong Java. Chúng được phân loại trên cơ sở số lượng lớp siêu và lớp con. Có một ngoại lệ là 'đa kế thừa' không được các lớp trong Java hỗ trợ trực tiếp. Thay vào đó, chúng ta sử dụng các giao diện để triển khai nhiều kế thừa. Bây giờ, chúng ta sẽ thảo luận về từng loại kế thừa với các ví dụ và chương trình.

Single Inheritance kế thừa đơn

Trong kế thừa đơn, có một lớp con kế thừa các thuộc tính từ một lớp cha. Trong sơ đồ dưới đây lớp A là một lớp cơ sở có nguồn gốc từ lớp B. Nó còn được gọi là kế thừa mức đơn.

Single Inheritance kế thừa đơn

Single Inheritance kế thừa đơn

Cú pháp kế thừa đơn

class A

{

  //methods and fields

}

Class B extends A

{

  //methods and fields

Multilevel Inheritance (Kế thừa đa cấp)

Trong loại kế thừa này, lớp con hay lớp dẫn xuất kế thừa các tính năng của lớp cha và đồng thời lớp con này hoạt động như một lớp cha cho lớp dẫn xuất khác.

Multilevel Inheritance (Kế thừa đa cấp)

Multilevel Inheritance (Kế thừa đa cấp)

Trong sơ đồ sau, lớp A là một lớp cơ sở được dẫn xuất từ lớp B, đến lượt nó, họa động như một lớp cơ sở cho một lớp dẫn xuất C. 

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

Hierarchical Inheritance ( Kế thừa phân cấp)

Trong kế thừa phân cấp, một lớp họa động như một lớp cha (Lớp cơ sở) cho nhiều hơn một  lớp con. Nhiều lớp con có thể kế thừa các tính năng của hợp lớp cơ sở.

Trong sơ đồ sau, lớp A là lớp cơ sở cho các lớp dẫn xuất B,C, D.

Hierarchical Inheritance ( Kế thừa phân cấp)

Hierarchical Inheritance ( Kế thừa phân cấp)

Multiple Inheritance (Đa kế thừa)

Trong đa kế thừa, một lớp con có thể có nhiều hơn một lớp cơ sở hoặc lớp cha à kế thừa các tính năng từ mọi lớp cha mà nó kế thừa. Trong sơ đồ dưới đây, lớp C kế thừa 

Multiple Inheritance (Đa kế thừa)

Multiple Inheritance (Đa kế thừa)

Hybrid Inheritance (Kế thừa lai)

Kế thừa lai là sự kết hợp của hai hoặc nhiều kiểu kế thừa. Java không hỗ trợ đa kế thừa với các lớp. Chung ta chỉ có thể thực hiện kế thừa lai qua giao diện.

Trong sơ đồ dưới đây, lớp A là lớp cơ sở cho lớp con B và C. Và lớp D kế thừa cả lớp B và C.

Kế thừa lai

Kế thừa lai

Kết luận: 

Kế thừa là đặc điểm cơ bản nhất của  lập trình hướng đối tượng. Kế thừa giúp giảm độ phức tạp của việc viết các mã vì nó cung cấp tính năng tái sử dụng mã. Hy vọng bài viết trên có thể giúp bạn hiểu rõ hơn về về tính kế thừa và có thể áp dụng kiến thức này trong các dự án thực tế của mình. Tìm hiểu thêm về Java và các khóa học lập trình khác tại T3H để bổ sung kiến thức trong lĩnh vực lập trình bạn nhé!