Bất cứ một ngôn ngữ lập trình nào nếu muốn được xem là một ngôn ngữ lập trình thuần
hướng đối tượng nó phải thỏa mãn các điều kiện sau:
- Nó phải hỗ trợ được 4 đặc điểm của phương pháp lập trình hướng đối tượng đó là:
- Tính đóng gói dữ liệu (Encapsulation)
- Tính kế thừa (Inheritance)
- Tính trừu tượng (Abstraction)
- Tính đa hình (Polymorphism)
- Những kiểu dữ liệu cơ bản được định nghĩa sẵn như
int
,string
,float
, ... phải ở dạng đối tượng. - Những kiểu dữ liệu được người dùng định nghĩa cũng phải ở dạng đối tượng.
- Những toán tử thực thi trên đối tượng phải ở dạng các phương thức.
Vậy ngôn ngữ lập trình Java vi phạm hai điều kiện (2)
và (4)
.
Vi phạm điều kiện (2)
: Java hỗ trợ bạn khai báo các kiểu dữ liệu định nghĩa sẵn dưới dạng int
, byte
, long
, ...v.v mà trong lập trình hướng đối tượng các kiểu dữ liệu này phải được đóng gói lại thành các đối tượng như Integer
, String
, ...v.v, mặc dù Java cũng hỗ trợ đóng gói các kiểu dữ liệu được định nghĩa sẵn này nhưng đó chỉ là lớp ngoài, thực chất nó vẫn dưới dạng kiểu dữ liệu cơ bản.
Vi phạm điều kiện (4)
: Java có thể sử dụng toán tử để thực hiện một phép tính nào đó giữa hai đối tượng như String s = "123" + "ABC"
, điều này vi phạm nguyên tắc thực thi trên đối tượng phải ở dạng các phương thức của phương pháp lập trình hướng đối tượng.