Test
abc

OOP: gồm 4 tính chất: đóng gói, kế thừa, đa hình, trừu tượng
Tính đóng gói:
Dữ liệu và hành động liên quan tới dữ liệu của lớp nào thì gói gọn trong chính lớp đó
Các thuộc tính để là private
Chỉ có thể truy cập trực tiếp vào thuộc tính private từ chính bên trong lớp chứa nó
Muốn truy cập tới thuộc tính private của lớp đó phải thông qua các phương thức public getter/setter của lớp chứa private đó
-> Giúp bảo mật, bảo vệ thông tin tránh bị truy cập trái phép

Tính kế thừa:
Là thừa hưởng các đặc trưng hành động từ 1 lớp khác
Biểu hiện : lớp con extends (kế thừa) thừ lớp cha, lớp A implements (Triển khai) interface của lớp B
Lớp cha thường sẽ được thiết kế đơn giản, tổng quát hơn lớp con vì mục đích là để k chỉ 1 lớp con, mà nhiều lớp con có thể sử dụng được. Vì vậy lớp con sẽ đầy đủ, cụ thể, chi tiết hơn lớp cha
-> Giúp tái sử dụng code nhưng vẫn đảm bảo được hệ thống phân cấp duy nhất
Tuy nhiên trong Java, C# thì chỉ hỗ trợ đơn kế thừa, tức là lớp con chỉ kế thừa được từ duy nhất 1 lớp cha. Còn nếu muốn dùng đa kế thừa thì phải dùng Interface.
Tính đa hình:
Là 1 đối tượng có nhiều hình dạng, vai trò khác nhau tùy vào các ngữ cảnh sử dụng khác nhau.
Biểu hiện: ghi đè, nạp chồng phương thức
Nạp chồng (overload): Tạo nhiều phiên bản của phương thức trong cùng 1 lớp để cung cấp nhiều cách sử dụng phương thức với dữ liệu khác nhau (thực thi tại thời điểm biên dịch) VD: cùng 1 phương thức nhưng lúc này có thể k cần thêm tham số, lúc khác có thể thêm nhiều tham số
Ghi đè (Override: trong C# thì thêm virtual): Thay đổi hành vi của phương thức được kế thừa từ lớp cha (thực thi tại thời điểm chương trình đang chạy)
-> Giúp chia sẻ chung cái interface giữa các đối tượng khác nhau
VD: 1 lớp con là chó kế thừa từ 1 lớp cha là động vật, thì lớp cha sẽ có 1 phương thức là tiếng kêu. Tuy nhiên lớp con sẽ phải có phương thức tiếng kêu riêng của lớp con. Và khi mà mình khai báo ở main thì tạo kiểu là kiểu của lớp cha nhưng mà tham chiếu đến new object của lớp con.
Tính trừu tượng:
Là tính chất mà chỉ tiết lộ những cái thành phần thiết yếu ra và ẩn giấu đi các thông tin không cần thiết
Biểu hiện: thông qua abtract class và interface
Tính trừu tượng chỉ nêu lên nhiệm vụ nhưng k nói cụ thể cách thức nó triển khai
-> Giúp giảm sự phức tạp vì ẩn đi các triển khai quan trọng khỏi bên ngoài.
Ready to bring your ops onto a single platform?