Kế thừa Dart được định nghĩa là quá trình lấy các thuộc tính và đặc điểm của một lớp khác. Nó cung cấp khả năng tạo một lớp mới từ một lớp hiện có. Đây là khái niệm cơ bản nhất của oops (cách tiếp cận lập trình hướng đối tượng). Chúng ta có thể sử dụng lại tất cả các hành vi và đặc điểm của lớp trước trong lớp mới.
- Lớp cha – Lớp được kế thừa bởi lớp khác được gọi là lớp cha hoặc lớp cha . Nó còn được gọi là một lớp cơ sở .
- Lớp con – Lớp kế thừa các thuộc tính từ lớp khác được gọi là lớp con. Nó còn được gọi là lớp dẫn xuất hoặc lớp con .
Giả sử chúng ta có một đội xe và chúng ta tạo ra ba lớp là Duster, Maruti và Jaguar. Các phương thức modelName (), milage () và man_year () sẽ giống nhau cho cả ba lớp. Bằng cách sử dụng kế thừa, chúng ta không cần phải viết các hàm này trong mỗi lớp trong số ba lớp.
Các bài viết liên quan:
Như bạn thấy trong hình trên, nếu chúng ta tạo lớp Car và viết hàm chung trong mỗi lớp. Khi đó, nó sẽ làm tăng sự trùng lặp và dư thừa dữ liệu trong chương trình. Sự kế thừa được sử dụng để tránh loại tình huống này.
Chúng ta có thể tránh dư thừa dữ liệu bằng cách xác định lớp Xe với các chức năng này trong đó và kế thừa trong các lớp khác từ lớp Xe. Nó tăng cường khả năng tái sử dụng của mã. Chúng ta chỉ cần viết hàm một lần thay vì nhiều lần. Chúng ta hãy nhìn vào hình ảnh sau đây.
Cú pháp được đưa ra dưới đây.
Cú pháp:
class child_class extends parent_class { //body of child class }
Lớp con kế thừa các hàm và biến, hoặc thuộc tính của lớp cha bằng cách sử dụng từ khóa expand. Nó không thể kế thừa phương thức khởi tạo của lớp cha; chúng ta sẽ thảo luận về khái niệm này sau.
Các loại thừa kế
Sự kế thừa có thể chủ yếu là bốn loại. Chúng được đưa ra dưới đây.
- Thừa kế duy nhất
- Nhiều người thừa kế
- Kế thừa đa cấp
- Kế thừa thứ bậc
Kế thừa một cấp
Trong thừa kế đơn, một lớp được kế thừa bởi một lớp hoặc lớp con được kế thừa bởi một lớp cha. Trong ví dụ sau, chúng ta tạo Person kế thừa lớp Human.
Hãy hiểu ví dụ sau.
Ví dụ:
Class Bird { void fly () { print ( "Con chim bay được" ); } } // Kế thừa lớp siêu Class Parrot extends Bird{ { // hàm lớp con void speak () { print ( "Con vẹt biết nói" ); } } void main () { // Tạo đối tượng của lớp con Parrot p = new Parrot (); p.speak (); p.fly (); }
Giải trình:
Trong đoạn mã trên, chúng ta tạo lớp cha Bird và khai báo hàm fly () trong đó. Sau đó, chúng tôi tạo lớp con có tên là Parrot, lớp này kế thừa thuộc tính của lớp cha bằng cách sử dụng từ khóa expand. Lớp con có hàm speak () riêng của nó.
Bây giờ lớp con có hai hàm fly () và speak (). Vì vậy, chúng tôi đã tạo đối tượng của lớp con và truy cập vào cả hai hàm. Nó in kết quả ra bảng điều khiển.
Kế thừa đa cấp
Trong đa kế thừa, một lớp con được kế thừa bởi một lớp con khác hoặc tạo chuỗi kế thừa. Hãy hiểu ví dụ sau.
Ví dụ:
Class Bird { void fly () { print ( "Con chim bay được" ); } } // Kế thừa lớp siêu class Parrot extends Bird { void speak () { print ( "Con vẹt biết nói" ); } } // Kế thừa lớp cơ sở Parror class Eagle extends Parrot { vision () { print ( "Chim ưng có tầm nhìn sắc bén" ); } } void main () { // Tạo đối tượng của lớp con Eagle e = new Eagle (); e.speak (); e.fly (); e.vision (); }
Giải trình:
Trong ví dụ trên, chúng ta đã tạo một lớp Eagle mới khác và kế thừa lớp Parrot. Bây giờ con vẹt là lớp cha của Eagle, và lớp Eagle có được tất cả các chức năng của cả hai lớp cha. Chúng tôi đã tạo đối tượng của lớp con và truy cập vào tất cả các thuộc tính. Nó in kết quả ra màn hình.
Lưu ý – Dart không hỗ trợ đa kế thừa vì nó tạo ra sự phức tạp trong chương trình.
Kế thừa thứ bậc
Trong nội dung phân cấp, hai hoặc nhiều lớp kế thừa một lớp duy nhất. Trong ví dụ sau, hai lớp con Peter và James kế thừa lớp Person.
Ví dụ –
// Lớp cha Class Person { void dispName (String name) { print (name); } void dispAge ( int age) { print (age); } } class Peter extends Person { void dispBranch (String nationality) { print (nationality); } } // Lớp dẫn xuất được tạo từ một lớp dẫn xuất khác. lớp James extends Person { void kết quả (Kết quả chuỗi) { print (kết quả); } } void main () { // Tạo đối tượng của lớp James James j = new James (); j.dispName ( "James" ); j.dispAge ( 24 ); j.result ( "Đạt" ); // Tạo đối tượng của lớp Peter Peter p = new Peter (); p.dispName ( "Peter" ); p.dispAge ( 21 ); p.dispBranch ( "Khoa học Máy tính" ); }