Chắc hẳn dân lập trình đều nắm rõ về 4 tính chất trong OOP. Vậy liệu trong Java các tính chất này có tồn tại? Cùng tìm hiểu nhé!
Do Java là một ngôn ngữ lập trình hướng đối tượng, thế nên nó cũng tồn tại 4 tính chất đặc trưng cơ bản mà OOP sở hữu.
Cụ thể là 4 tính chất sau:
Tính đóng gói (Encapsulation)
Tính chất này cung cấp khả năng ẩn các chi tiết bên trong của một đối tượng với thế giới bên ngoài và chỉ hiển thị giao diện chung để truy cập chức năng của đối tượng.
Trong Java, điều này thường được thực hiện bằng cách xác định trạng thái bên trong của đối tượng (data) là riêng tư và cung cấp các phương thức công khai (getters và setters) để thao tác trạng thái đó.
Thông qua cách đóng gói trạng thái bên trong của đối tượng, mã sử dụng đối tượng sẽ được bảo vệ khỏi các chi tiết về cách quản lý trạng thái của đối tượng. Nhờ đó mà đối tượng dễ sử dụng và ít bị lỗi hơn.
Đồng thời, tính chất này cũng cung cấp một cách để thực thi tính toàn vẹn và khả năng bảo trì của dữ liệu bằng cách ngăn mã bên ngoài truy cập trực tiếp và sửa đổi trạng thái bên trong của đối tượng.
Tính kế thừa (Inheritance)
Với tính kế thừa, cho phép một lớp mới dựa trên một lớp hiện có, đồng thời kế thừa các thuộc tính và phương thức của nó. Sau đó, lớp mới có thể mở rộng hoặc ghi đè các thuộc tính và phương thức kế thừa này.
Nhờ đó, giúp cho việc tái sử dụng mã, cũng như quá trình phát triển các chương trình phức tạp trở nên đơn giản hơn rất nhiều.
Còn trong Java, tính kế thừa đạt được bằng cách sử dụng từ khóa "extends", trong đó lớp con sẽ được khai báo là lớp con của lớp cha.
Tính đa hình (Polymorphism)
Tính đa hình thể hiện khả năng các đối tượng thuộc các lớp khác nhau được coi như thể chúng thuộc cùng một lớp.
Đồng thời, cho phép lập trình tổng quát hơn, trong đó mã có thể được viết để hoạt động với bất kỳ đối tượng nào đáp ứng các tiêu chí nhất định, thay vì bị ràng buộc với một lớp cụ thể.
Trong Java, tính đa hình đạt được thông qua phương thức nạp chồng (Method Overloading) và phương thức ghi đè (Method Overriding). Cụ thể hơn:
- Phương thức nạp chồng (Method Overloading): Là khi một lớp có nhiều phương thức có cùng tên nhưng khác tham số.
- Phương thức ghi đè (Method Overriding): Là khi một lớp con cung cấp triển khai riêng của một phương thức đã được định nghĩa trong lớp cha của nó.
Với sự hỗ trợ của hai phương thức này, cho phép lớp con có hành vi chuyên biệt của riêng mình, mà vẫn được xem là một bản thể của lớp cha.
Tính trừu tượng (Abstraction)
Đây là khả năng biểu diễn các đối tượng phức tạp trong thế giới thực, bằng cách sử dụng các đối tượng đơn giản hơn, trừu tượng hơn trong mã, giúp mã trở nên linh hoạt và dễ bảo trì hơn qua việc làm giảm độ phức tạp trong mã.
Tính chất này liên quan đến việc xác định các đặc điểm và hành vi thiết yếu của một đối tượng, trong khi bỏ qua các chi tiết không liên quan.
Trong Java, yếu tố trừu tượng hóa thường đạt được bằng việc sử dụng các lớp và giao diện trừu tượng.
Các lớp trừu tượng sẽ định nghĩa một tập hợp các thuộc tính và phương thức chung, có thể được chia sẻ bởi một nhóm các lớp liên quan, trong khi để lại việc triển khai một số phương thức này cho các lớp con cụ thể.
Còn giao diện xác định một tập hợp các phương thức phải được triển khai bởi bất kỳ lớp nào triển khai giao diện, cho phép các lớp khác nhau chia sẻ hành vi chung.
Bằng cách trừu tượng hóa các chi tiết triển khai của một đối tượng, mà việc viết mà của các nhà phát triển trở nên linh hoạt hơn, module hóa và dễ bảo trì hơn.
Nhờ đó, giúp cho việc lập trình càng trở nên hiệu quả hơn, đồng thời cải thiện đáng kể khả năng mở rộng, cũng như khả năng tái sử dụng mã.