Thừa kế là gì?
Kế thừa là một cơ chế trong đó một lớp có được tài sản của lớp khác. Ví dụ, một đứa trẻ thừa hưởng những đặc điểm của cha mẹ mình. Với kế thừa, chúng ta có thể sử dụng lại các trường và phương thức của lớp hiện có. Do đó, kế thừa tạo điều kiện cho Khả năng tái sử dụng và là một khái niệm quan trọng của OOP.
Trong hướng dẫn này, bạn sẽ học-
- Các loại thừa kế
- Kế thừa trong Java
- Ví dụ về kế thừa Java
- Siêu từ khóa
- Tìm hiểu kế thừa trong OOP với ví dụ
Các loại thừa kế
Có nhiều kiểu kế thừa khác nhau trong Java:
Thừa kế duy nhất:
Trong Kế thừa Đơn lẻ, một lớp mở rộng một lớp khác (chỉ một lớp).

Trong sơ đồ trên, Lớp B chỉ mở rộng Lớp A. Lớp A là lớp siêu và Lớp B là lớp phụ.
Nhiều thừa kế:
Trong Thừa kế Nhiều lớp, một lớp mở rộng nhiều hơn một lớp. Java không hỗ trợ đa kế thừa.

Theo sơ đồ trên, Lớp C mở rộng cả Lớp A và Lớp B.
Kế thừa đa cấp:
Trong Kế thừa Đa cấp, một lớp có thể kế thừa từ một lớp dẫn xuất. Do đó, lớp dẫn xuất trở thành lớp cơ sở cho lớp mới.

Như thể hiện trong sơ đồ, Lớp C là lớp con của B và B là lớp con của Lớp A.
Kế thừa phân cấp:
Trong Hierarchical Inheritance, một lớp được kế thừa bởi nhiều lớp con.

Theo ví dụ trên, Lớp B, C và D kế thừa cùng một lớp A.
Thừa kế lai:
Thừa kế lai là sự kết hợp của Thừa kế đơn và Đa thừa kế.

Theo ví dụ trên, tất cả các thành viên công khai và được bảo vệ của Lớp A được kế thừa vào Lớp D, đầu tiên qua Lớp B và thứ hai qua Lớp C.
Lưu ý: Java không hỗ trợ kết hợp / Nhiều kế thừa
Kế thừa trong Java
JAVA INHERITANCE là một cơ chế trong đó một lớp có được tài sản của lớp khác. Trong Java, khi tồn tại mối quan hệ "Is-A" giữa hai lớp, chúng ta sử dụng Kế thừa. Lớp cha được gọi là siêu lớp và lớp kế thừa được gọi là lớp con. Từ khóa
extends
được sử dụng bởi lớp con để kế thừa các tính năng của lớp siêu.
Tính kế thừa rất quan trọng vì nó dẫn đến khả năng tái sử dụng của mã.
Cú pháp kế thừa Java:
class subClass extends superClass{//methods and fields}
Ví dụ về kế thừa Java
class Doctor {void Doctor_Details() {System.out.println("Doctor Details… ");}}class Surgeon extends Doctor {void Surgeon_Details() {System.out.println("Surgen Detail… ");}}public class Hospital {public static void main(String args[]) {Surgeon s = new Surgeon();s.Doctor_Details();s.Surgeon_Details();}}
Siêu từ khóa
Từ khóa super tương tự như từ khóa "this".
Từ khóa super có thể được sử dụng để truy cập bất kỳ thành viên dữ liệu hoặc các phương thức của lớp cha.
Từ khóa super có thể được sử dụng ở cấp độ biến, phương thức và hàm tạo.
Cú pháp:
super.();
Tìm hiểu kế thừa trong OOP với ví dụ
Hãy xem xét ứng dụng ngân hàng tương tự từ ví dụ trước.
Chúng tôi phải mở hai loại tài khoản khác nhau, một để tiết kiệm và một để kiểm tra (còn được gọi là hiện tại).
Hãy so sánh và nghiên cứu cách chúng ta có thể tiếp cận mã hóa từ quan điểm lập trình có cấu trúc và hướng đối tượng. Cách tiếp cận cấu trúc : Trong lập trình có cấu trúc, chúng ta sẽ tạo hai hàm:
- Một để rút
- Và cái còn lại cho hành động gửi tiền.
Vì hoạt động của các chức năng này vẫn giống nhau trên các tài khoản.
Cách tiếp cận của OOP : Trong khi sử dụng cách tiếp cận lập trình OOPs. Chúng tôi sẽ tạo ra hai lớp.
- Mỗi người có thực hiện các chức năng gửi và rút tiền.
- Điều này sẽ làm dư thừa công việc.
Thay đổi yêu cầu trong phần mềm
Bây giờ có một sự thay đổi trong đặc tả yêu cầu đối với một thứ quá phổ biến trong ngành công nghiệp phần mềm. Bạn phải thêm Tài khoản Ngân hàng đặc quyền có chức năng với Tiện ích thấu chi. Về cơ bản, thấu chi là một phương tiện mà bạn có thể rút một số tiền nhiều hơn số dư khả dụng trong tài khoản của mình.
Cách tiếp cận cấu trúc: Sử dụng cách tiếp cận chức năng, tôi phải sửa đổi chức năng rút tiền của mình, chức năng này đã được thử nghiệm và cơ bản. Và thêm một phương thức như bên dưới sẽ xử lý các yêu cầu mới.
Cách tiếp cận của OOP: Sử dụng cách tiếp cận của OOP, bạn chỉ cần viết một lớp mới với cách triển khai duy nhất của hàm rút. Chúng tôi chưa bao giờ chạm vào đoạn mã đã thử nghiệm.
Yêu cầu thay đổi khác
Nếu yêu cầu thay đổi thêm thì sao? Thích thêm tài khoản thẻ tín dụng với yêu cầu tiền gửi duy nhất của riêng nó .
Cách tiếp cận cấu trúc: Sử dụng cách tiếp cận cấu trúc, bạn phải thay đổi lại đoạn mã tiền gửi đã thử nghiệm.
Cách tiếp cận của OOP : Nhưng sử dụng cách tiếp cận hướng đối tượng, bạn sẽ chỉ tạo một lớp mới với cách triển khai duy nhất của phương thức ký gửi (được đánh dấu màu đỏ trong hình ảnh bên dưới).
Vì vậy, mặc dù ban đầu lập trình cấu trúc có vẻ là một cách tiếp cận dễ dàng, nhưng OOP sẽ thắng về lâu dài.
Lợi thế của Thừa kế trong OOPs
Nhưng người ta có thể tranh luận rằng trên tất cả các lớp, bạn có một đoạn mã lặp lại.
Để khắc phục điều này, bạn tạo một lớp cha, nói là "tài khoản" và thực hiện chức năng gửi và rút tiền giống nhau. Và làm cho các lớp con kế thừa lớp "tài khoản". Vì vậy, họ sẽ có quyền truy cập vào các chức năng rút và gửi tiền trong lớp tài khoản.
Các chức năng không bắt buộc phải được thực hiện riêng lẻ. Đây là Thừa kế trong java. .