Lập trình hướng đối tượng là thuật ngữ khá đỗi quen thuộc với các lập trình viên, bao gồm cả 4 đặc tính của nó. Tuy nhiên, ở mỗi đặc tính sẽ có những đặc điểm khác biệt nhau. Trong bài viết này, FUNiX sẽ thực hiện so sánh tính kế thừa và tính bao đóng trong Java để bạn tham khảo và biết cách ứng dụng sao cho phù hợp nhất!
- Học ngôn ngữ lập trình Python có khó không? Những điều cần lưu ý khi học là gì?
- Học lập trình web nên học ngôn ngữ nào có tính ứng dụng cao?
- FUNiX ra mắt môn Lập trình hướng đối tượng bằng Java (version 3)
- 4 tính chất trong lập trình hướng đối tượng
- Lớp lồng nhau (Inner Class) là gì? Các kiểu của lớp lồng nhau trong Java
>> Khóa học lập trình cơ bản
>> Kỹ thuật lập trình PHP
1. Giới thiệu về tính kế thừa và tính bao đóng trong lập trình hướng đối tượng
Trước khi so sánh tính kế thừa và tính bao đóng trong lập trình hướng đối tượng, bạn cần biết định nghĩa của 2 đặc tính này là gì?
1.1 Định nghĩa của tính kế thừa ((Inheritance)
Một trong những tính năng quan trọng của lập trình hướng đối tượng (OOP) phải kể đến đầu tiên chính là tính kế thừa. Đặc tính này thể hiện mối quan hệ cha-con giữa các lớp (classes) với nhau và nhờ vào mối quan hệ này cho phép lớp con (child class) thừa hưởng những đặc tính của lớp cha (parent class). Các đặc tính này có thể bao gồm thuộc tính (attributes) hoặc các phương thức (methods) được định nghĩa trong lớp cha.
Hiểu một cách đơn giản, tính kế thừa được mô tả nhằm tạo ra một lớp mới bằng cách sử dụng lại các thuộc tính của lớp hiện có.
Trong Java, có 3 dạng kế thừa chính đó là: kế thừa từ Class, kế thừa từ lớp trừu tượng (Abstract class) và kế thừa từ Interface.
1.2 Định nghĩa của tính bao đóng (Encapsulation)
Trong Java, tính bao đóng cũng đóng vai trò quan trọng không kém, nó được hiểu là sự che giấu bên trong dữ liệu riêng thuộc mỗi đối tượng của lớp được khai báo và chỉ được truy xuất thông qua hệ thống các phương thức có sẵn của lớp.
Ví dụ: Một gói ngũ cốc nguyên hạt là hỗn hợp của nhiều loại hạt khác nhau tạo thành.
Đặc điểm chính của tính bao đóng là tạo ra một tấm bảo vệ code và tránh code và dữ liệu của bạn bị truy cập một cách ngẫu nhiên bởi các code khác bên ngoài class. Truy cập dữ liệu và code được điều khiển một cách chặt chẽ bởi một interface.
Đặc biệt, người lập trình có thể dựa vào cơ chế này để ngăn ngừa việc gán giá trị không hợp lệ vào thành phần dữ liệu của mỗi đối tượng. Đồng thời, cho phép thay đổi cấu trúc bên trong của một lớp mà không làm ảnh hưởng đến những lớp bên ngoài có sử dụng lớp đó.
2. So sánh tính kế thừa và tính bao đóng trong lập trình hướng đối tượng
Điểm giống nhau giữa tính kế thừa và tính bao đóng trong OPP: Cả hai đều là khái niệm của lập trình hướng đối tượng.
Sự khác biệt giữa tính kế thừa và tính bao đóng trong lập trình hướng đối tượng được thể hiện cụ thể ở bảng dưới đây:
Tính kế thừa
Tính bao đóng
Khái niệm
Kế thừa là tạo một lớp mới bằng cách sử dụng các thuộc tính và phương thức của một lớp hiện có.
Bao đóng là quá trình đóng gói dữ liệu và các chức năng thao tác dữ liệu này thành một đơn vị duy nhất, để che giấu việc triển khai bên trong với thế giới bên ngoài.
Sử dụng
Sự kế thừa được sử dụng để tái sử dụng mã.
Bao đóng được dùng để ẩn sự phức tạp của một hệ thống.
Thực hiện
Kế thừa được thực hiện trong các lớp.
Bao đóng được thực hiện bằng cách sử dụng các sửa đổi truy cập..
Thể loại
Thừa kế có thể được chia thành thừa kế đơn cấp, đa cấp, phân cấp, kết hợp và đa cấp.
Đóng gói chỉ có một thể loại duy nhất.
Mặc dù, tính kế thừa và tính bao đóng là những khái niệm có liên quan nhiều trong các ngôn ngữ lập trình hướng đối tượng nhưng giữa chúng vẫn có những điểm khác biệt chính. Mong rằng bài viết so sánh trên đây của FUNiX sẽ giúp bạn hiểu hơn về 2 đặc tính khi thực hiện lập trình Java.
Phạm Thị Thanh Ngọc
Tôi là Nguyễn Văn Sỹ có 15 năm kinh nghiệm trong lĩnh vực thiết kế, thi công đồ nội thất; với niềm đam mê và yêu nghề tôi đã tạo ra những thiết kếtuyệt vời trong phòng khách, phòng bếp, phòng ngủ, sân vườn… Ngoài ra với khả năng nghiên cứu, tìm tòi học hỏi các kiến thức đời sống xã hội và sự kiện, tôi đã đưa ra những kiến thức bổ ích tại website nhaxinhplaza.vn. Hy vọng những kiến thức mà tôi chia sẻ này sẽ giúp ích cho bạn!