Kế thừa là một cơ chế trong đó một lớp mua lại tài sản của một lớp khác. Chẳng hạn, một đứa trẻ được thừa hưởng những đặc điểm của bố mẹ. Với sự 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 đó, thừa kế tạo điều kiện 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 kiểu thừa kế
Kế thừa trong Java
Ví dụ kế thừa Java
Từ khóa
Tìm hiểu tính kế thừa trong OOP với ví dụ
Các kiểu thừa kế
Có nhiều kiểu thừa kế khác nhau trong Java:
Kế thừa duy nhất:
Trong Kế thừa đơn, 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à siêu hạng và Lớp B là Lớp con.
Đa kế thừa:
Trong Đa kế thừa, một lớp mở rộng nhiều hơn một lớp. Java không hỗ trợ nhiều kế thừa.
Theo sơ đồ trên, Class C mở rộng cả Class A và Class 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.
Theo như 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 Kế thừa phân cấp, một lớp được kế thừa bởi nhiều lớp phụ.
Theo ví dụ trên, lớp B, C và D thừa hưởng cùng một lớp A.
Kế thừa lai:
Di truyền lai là sự kết hợp của thừa kế Đơn và Đa.
Theo ví dụ trên, tất cả các thành viên được bảo vệ và công khai của Lớp A được thừa kế 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ợ lai / Nhiều kế thừa
Kế thừa trong Java
Kế thừa Java là một cơ chế trong đó một lớp có được thuộc tính của một 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 sử dụng bởi lớp phụ để kế thừa các tính năng của siêu hạng. Kế thừa là quan trọng vì nó dẫn đến khả năng sử dụng lại mã.
Cú pháp kế thừa Java:
class subClass extends superClass
{
//methods and fields
}
Ví dụ 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();
}
}
Từ khoá Super
Siêu từ khóa tương tự như từ khóa "this".
Siêu từ khóa 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.
Siêu từ khóa có thể được sử dụng ở cấp độ biến, phương thức và hàm tạo.
Cú pháp:
super.<method-name>();
Tìm hiểu tính kế thừa trong OOP với ví dụ
Hãy xem xét cùng một ứng dụng ngân hàng 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 để lưu và một loại khác để 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 hướng đối tượng và có cấu trúc. 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 tiền
Và khác cho hành động tiền gửi.
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 phương pháp lập trình OOP. Chúng tôi sẽ tạo ra hai lớp.
Mỗi có thực hiện các chức năng gửi và rút tiền.
Điều này sẽ dư thừa công việc.
Yêu cầu thay đổi trong phần mềm
Bây giờ có một sự thay đổi trong đặc tả yêu cầu cho một cái gì đó rất 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 chức năng với Cơ sở thấu chi. Đối với một nền tảng, thấu chi là một cơ sở nơi bạn có thể rút một số tiền nhiều hơn số dư có sẵn trong tài khoản của bạn.
Cách tiếp cận cấu trúc: 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, đã được thử nghiệm và cơ sở. Và thêm một phương pháp như dưới đây sẽ chăm sóc các yêu cầu mới.
Cách tiếp cận của OOP: Sử dụng phương pháp của OOP, bạn chỉ cần viết một lớp mới với triển khai chức năng rút tiền duy nhất. Chúng tôi không bao giờ chạm vào đoạn mã được thử nghiệm.
Yêu cầu thay đổi khác
Nếu yêu cầu thay đổi hơn nữa thì sao? Thích thêm tài khoản thẻ tín dụng với yêu cầu riêng về tiền gửi .
Cách tiếp cận cấu trúc: Sử dụng phương pháp cấu trúc, bạn phải thay đổi đoạn mã ký gửi được kiểm tra lại.
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 phương thức ký gửi duy nhất (tô sáng màu đỏ trong hình bên dưới).
Vì vậy, mặc dù ban đầu lập trình cấu trúc có vẻ như là một cách tiếp cận dễ dàng, nhưng OOP sẽ chiến thắng trong một thời gian dài.
Lợi thế của sự 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 đi lặp lại.
Để khắc phục điều này, bạn tạo một lớp cha, nói "tài khoản" và thực hiện cùng chức năng gửi và rút tiền. Và làm cho các lớp con được kế thừa lớp "tài khoản". Vì vậy, họ sẽ có quyền truy cập vào 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à sự kế thừa trong java. .
Đăng nhận xét