- Là hạn chế truy xuất trực tiếp đến các field trong class. - Các field chỉ có thể truy cập từ bên trong class hiện tại hoặc class dược kế thừa. Inheritance (kế thừa) - Một clas Polymorphism (đa hình) - Một đối tượng nó nhiều "hình dạng". - Một hành động có thể thực hiện bằng nhiều cách khác nhau. Static member (thành viên tĩnh) Static class (lớp tĩnh) Chỉ chứa các thành phần tĩnh (biến tĩnh, phương thức tĩnh). Không thể khai báo, khởi tạo 1 đối tượng thuộc lớp tĩnh. Ràng buộc các thành phần bên trong lớp phải là static. Abstract class (Lớp trừu tượng) - Như một class thường nhưng có thể khai báo được abstract method. - Không thể khởi tạo một abstract class. Interface - Chỉ có thể chứa abstract method vs hằng.
Singleton design pattern
- Đọc trong word COMPARE Class vs Object - Một lớp là khuôn mẫu để tạo các đối tượng, trong khi đối tượng là một instance của một lớp. - Một lớp là một thực thể logic, trong khi một đối tượng là một thực thể vật lý - Một lớp không phân bổ không gian bộ nhớ; mặt khác, một đối tượng phân bổ không gian bộ nhớ. Static class vs normal class - Các lớp tĩnh chứa các đối tượng tĩnh không thể khởi tạo nhiều lần. - Abstract class vs normal class - Không thể new được một abstract class (tạo được nhưng mà tạo anonymous object) Abstract class vs interface Giống nhau: - Khi khởi tạo thì phải implement hết lại tất cả abstract method có trong nó. Khác nhau: - Abstract class: variable, method, abstract method. Interface: abstract method, constant. - Nếu class Laptop kế thừa abstract class là Product thì em có thể nói Laptop là một (is a) Product. Còn khi một Laptop implement interface là Printable thì ta nói Laptop có (has a) những tính năng của cái interface Printable này. - Khi 1 class kế thừa một abstract class thì những hàm đã cứng như vậy rồi không thay đổi đc. Còn 1 interface có thể có nhiều class implement qua đó giúp nó thay đổi hành vi trong runtime khi sử dụng. - Abstract class có thể tái sử dụng code (vì nó cũng gần như một class). Còn interface thì chỉ có abstract method (không có bất kì implement). - Thêm một method: interface phải đi tới từng cái class implement nó để thêm. Còn abstract class khi thêm một default method thì có thể dùng đc ngay - Access modifier: Interface không có và luôn là public (do một abstract class trong interface phải được implement). - Constructor, destructor: interface không có, abstract class có những không new đc và thường được các class bên dưới gọi bằng super(). Khi nào sử dụng interface, abstract class? - Interface: có nhiều class có cùng một method có cùng tham số và kiểu trả về. - Abstract class: dùng để tạo ra một thứ chung chung. Tại sao abstract class cũng có abstract method mà lại cần thêm interface? - Do tính chất kế thừa trong code (1 class chỉ được kế thừa một và chỉ một class những 1 class có thể kế thừa nhiều interface, 1 interface có thể kế thừa nhiều interface khác).