Kế thừa ở Java (có ví dụ)

Thừa kế là gì?

di sản là một cơ chế trong đó một lớp có được thuộc tính của lớp khác. Ví dụ, một đứa trẻ được thừa hưởng những đặc điểm của bố mẹ. Với tính 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 đó, tính kế thừa tạo điều kiện cho Khả năng sử dụng lại và là một khái niệm quan trọng của OOP.

Di truyền là gì trong Java?

Java di sản là một cơ chế trong đó một lớp có được thuộc tính 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 tôi 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 lớp con sử dụng để kế thừa các tính năng của lớp cha. Kế thừa rất quan trọng vì nó dẫn đến khả năng tái sử dụng mã.

Java Cú pháp kế thừa:

class subClass extends superClass  
{  
   //methods and fields  
} 

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

Dưới đây là các kiểu thừa kế khác nhau trong Java:

  1. Thừa kế duy nhất
  2. Nhiều người thừa kế
  3. Kế thừa đa cấp
  4. Kế thừa thứ bậc
  5. Thừa kế lai

1. Di sản đơn lẻ:

Trong Kế thừa đơn, một lớp mở rộng một lớp khác (chỉ một lớp).

Kế thừa đơn trong Java
Thừa kế duy nhất

Trong sơ đồ trên, Lớp B chỉ mở rộng Lớp A. Lớp A là siêu lớp và Lớp B là Lớp con.

2. Kế thừa đa dạng:

Đa kế thừa là một trong những kế thừa trong Java các loại trong đó một lớp mở rộng nhiều hơn một lớp. Java không hỗ trợ đa kế thừa.

Đa kế thừa trong Java
Java Nhiều người thừa kế

Theo sơ đồ trên, Lớp C mở rộng cả Lớp A và Lớp B.

3. 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.

Kế thừa đa cấp trong Java
Kế thừa đa cấp

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.

4. Kế thừa theo thứ bậc:

Trong Kế thừa phân cấp, một lớp được kế thừa bởi nhiều lớp con.


Sự kế thừa theo thứ bậc trong Java
Kế thừa thứ bậc

Theo ví dụ trên, Lớp B, C và D kế thừa cùng một lớp A.

5. Di truyền lai:

Di truyền lai là một trong những kiểu thừa kế ở Java đó là sự kết hợp giữa kế thừa Đơn và Đa.


Thừa kế lai
Thừa kế lai

Theo ví dụ trên, tất cả các thành viên public và protected của Lớp A được kế thừa vào Lớp D, đầu tiên là qua Lớp B và thứ hai là qua Lớp C.

Lưu ý: Java không hỗ trợ lai/Đa kế thừa

Kế thừa ở Java Ví dụ

Đây là một ví dụ về sự kế thừa trong Java:


Ví dụ về Java di sản
Java Ví dụ về kế thừa

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 phương thức nào của lớp cha. Từ khóa super có thể được sử dụng tại biến, phương thức và mức độ xây dựng.

Cú pháp:

super.<method-name>();

Cũng kiểm tra:- Từ khóa này trong Java: Là gì và cách sử dụng với Ví dụ

Tìm hiểu tính 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 loại để tiết kiệm và một loại khác để kiểm tra (còn được gọi là hiện tại).

Kế thừa trong OOP

Hãy so sánh và nghiên cứu cách chúng ta có thể tiếp cận việc viết mã từ mộ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 mang tính cấu trúc: Trong lập trình có cấu trúc, chúng ta sẽ tạo hai hàm –

  1. Một để rút
  2. 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.

Kế thừa trong OOP

Cách tiếp cận của OOP: Trong khi sử dụng Giáo sư cách tiếp cận lập trình. Chúng tôi sẽ tạo ra hai lớp.

  • Mỗi cái đều 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 làm thêm.

Kế thừa trong OOP

Yêu cầu thay đổi trong phần mềm

Bây giờ có sự thay đổi trong đặc tả yêu cầu đối với một thứ rất phổ biến trong công nghiệp phần mềm. Bạn phải thêm chức năng Tài khoản ngân hàng đặc quyền 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 số tiền nhiều hơn số dư khả dụng trong tài khoản của mình.

Yêu cầu thay đổi trong phần mềm

Cách tiếp cận mang tính kết cấu: Sử dụng phương pháp 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à làm cơ sở. Và thêm một phương thức như dưới đây sẽ đáp ứng các yêu cầu mới.

Yêu cầu thay đổi trong phần mềm

Cách tiếp cận của OOP: Sử dụng phương pháp 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 chức năng rút tiền duy nhất. Chúng tôi chưa bao giờ chạm vào đoạn mã đã được kiểm tra.

Yêu cầu thay đổi trong phần mềm

Yêu cầu thay đổi khác

Điều gì sẽ xảy ra nếu yêu cầu thay đổi hơn nữa? Muốn thêm tài khoản thẻ tín dụng với yêu cầu gửi tiền riêng.

Nhiều yêu cầu thay đổi trong yêu cầu phần mềm

Cách tiếp cận mang tính kết cấu: Sử dụng phương pháp cấu trúc, bạn phải thay đổi lại đoạn mã gửi tiền đã được kiểm tra.

Cách tiếp cận mang tính cấu trúc đối với Yêu cầu nhiều thay đổi trong phần mềm

Cách tiếp cận của OOP: Nhưng khi sử dụng phương pháp hướng đối tượng, bạn sẽ chỉ tạo một lớp mới với cách triển khai phương thức gửi tiền độc đáo (được tô sáng màu đỏ trong hình ảnh bên dưới). Vì vậy, mặc dù lập trình cấu trúc có vẻ là một phương pháp dễ dàng lúc đầu, nhưng về lâu dài, OOP lại chiến thắng.

Cách tiếp cận của OOP đối với Yêu cầu nhiều thay đổi

Ưu điểm của tính kế thừa trong OOP

Nhưng người ta có thể lập 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, chẳng hạn như "tài khoản" và triển khai cùng một chức năng gửi tiền và rút tiền. Và tạo các lớp con kế thừa lớp "tài khoản". Để chúng có thể truy cập vào các chức năng rút tiền 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 triển khai riêng lẻ. Đây là Kế thừa trong java. .

Ưu điểm của tính kế thừa trong OOP

Ưu điểm của tính kế thừa trong OOP