Kế thừa là gì?


Kế thừa là gì?
          Các đối tượng khác nhau thường có một số đặc điểm chung. Ví dụ như xe đạp leo núi, xe đạp đôi, xe đạp đi đường, chúng đều có đặc điểm chung của một chiếc xe đạp, nhưng bản thân mỗi chiếc xe đạp lại mang những đặc điểm riêng làm chúng khác biệt hơn so với các loại xe còn lại: Xe đạp leo núi thì lốp xe dày hơn, xe đạp đôi thì có 2 ghế ngồi và 2 tay điều khiển, xe đạp đi đường thì có trọng lượng nhẹ hơn. Ta gọi xe đạp là lớp cha (superclass) và xe đạp leo núi, xe đạp đôi, xe đạp đi đường là các lớp con (subclass). Các lớp con thì kế thừa (inheritance) từ lớp cha.
          Vậy kế thừa, đúng như nghĩa của nó, là việc thừa hưởng các đặc điểm và hành vi từ lớp cha, trong khi đó vẫn có thể phát triển những đặc điểm và hành vi (hay thuộc tính và phương thức khi nói trong lập trình) của mình (lớp con). Ở ví dụ trên, xe đạp leo núi, xe đạp đôi, xe đạp đi đường đều thừa hưởng đặc điểm và hành vi của xe đạp, nhưng mỗi loại xe lại mang tính năng riêng của nó khiến chúng trở nên khác biệt.

Ví dụ về kế thừa đối với xe đạp
Trong Java, cú pháp của kế thừa rất đơn giản, chỉ cần thêm extends + tên lớp muốn kế thừa phía sau lớp đó
class MountainBike extends Bicycle{
//Viet cac thuoc tinh va phuong thuc
}
          Sau khi thực hiện, các thuộc tính và phương thức của lớp MountainBike sẽ hưởng từ lớp Bicycle, và ta có thể thêm thuộc tính và phương thức cho MountainBike ở dấu “…”
          Lưu ý: Mỗi lớp chỉ có thể kế thừa được duy nhất 1 lớp khác. Có thể có nhiều lớp kế thừa cùng 1 lớp giống nhau (như ví dụ trên, các lớp bike khác nhau kế thừa từ cùng một lớp bicycle, nhưng các lớp này chỉ được kế thừa duy nhất 1 lớp bicycle, không thể kế thừa đồng thời 2 hoặc nhiều lớp khác).
          Việc kế thừa giúp cho lập trình viên thuận lợi rất nhiều trong việc xây dựng code của mình. Trong khi viết code về kế thừa, bạn sẽ không thấy thuộc tính và phương thức của lớp cha tại lớp con khi kế thừa lớp cha đó, nếu cần nên chú thích rõ ràng để tiện hơn trong khi code.
Nội dung bài viết dựa trên Oracle kết hợp với kiến thức mình có.

Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn


Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)