Trong Java, Object là lớp cơ sở cho tất cả các lớp khác. Tất cả các lớp trong Java đều kế thừa từ lớp Object trực tiếp hoặc gián tiếp. Lớp Object được định nghĩa trong gói java.lang, vì vậy không cần phải import nó khi sử dụng.
Dưới đây là một số điểm quan trọng về lớp Object trong Java:
Phương thức Mô tả equals(Object obj) So sánh hai đối tượng xem chúng có bằng nhau hay không. Thường được ghi đè để cung cấp cách tùy chỉnh cho quá trình so sánh. toString() Chuyển đổi đối tượng thành chuỗi. Mặc định trả về tên lớp và địa chỉ bộ nhớ của đối tượng. hashCode() Trả về mã băm của đối tượng, thường được sử dụng trong cấu trúc dữ liệu dựa trên băm. getClass() Trả về đối tượng Class mô tả lớp của đối tượng. clone() Tạo ra một bản sao của đối tượng. finalize() Được gọi bởi garbage collector trước khi đối tượng bị thu gom. notify(), notifyAll(), wait() Sử dụng trong đa luồng để đồng bộ hóa và giao tiếp giữa các luồng.
Lớp Object cung cấp một cơ sở chung cho tất cả các đối tượng trong Java, và các phương thức được định nghĩa trong lớp này có thể được ghi đè (override) để cung cấp hành vi tùy chỉnh cho các lớp con.
Dưới đây là một ví dụ minh họa về việc sử dụng lớp Object và một số phương thức quan trọng của nó:
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// Override phương thức toString() để chuyển đối tượng thành chuỗi
@Override
public String toString() {
return "Student{name='" + name + "', age=" + age + "}";
}
// Override phương thức equals() để so sánh hai đối tượng
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Student student = (Student) obj;
return age == student.age && name.equals(student.name);
}
// Override phương thức hashCode() để trả về mã băm của đối tượng
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
public class ObjectExample {
public static void main(String[] args) {
// Tạo một đối tượng Student
Student student1 = new Student("John", 20);
// Sử dụng phương thức toString() để chuyển đối tượng thành chuỗi
System.out.println("Student 1: " + student1);
// Tạo một bản sao của đối tượng Student bằng phương thức clone()
Student student2 = (Student) student1.clone();
// Sử dụng phương thức equals() để so sánh hai đối tượng
System.out.println("Student 1 và Student 2 có bằng nhau không? " + student1.equals(student2));
// Sử dụng phương thức hashCode() để lấy mã băm của đối tượng
System.out.println("Mã băm của Student 1: " + student1.hashCode());
}
}Trong ví dụ này:
- Chúng ta định nghĩa một lớp Student với các thuộc tính name và age. - Chúng ta ghi đè (override) các phương thức toString(), equals(), và hashCode() của lớp Object để cung cấp hành vi tùy chỉnh cho lớp Student. - Trong phương thức main(), chúng ta tạo một đối tượng Student, sử dụng các phương thức được ghi đè để chuyển đổi đối tượng thành chuỗi, so sánh hai đối tượng, và lấy mã băm của đối tượng. - Trong đoạn mã bạn đã cung cấp, không có một cách rõ ràng nào để gọi phương thức toString() trên đối tượng student1. Thông thường, khi chúng ta sử dụng System.out.println() để in một đối tượng, Java sẽ tự động gọi phương thức toString() của đối tượng đó để chuyển nó thành chuỗi. - Tuy nhiên, nếu lớp Student của bạn không ghi đè phương thức toString(), thì nó sẽ sử dụng phương thức toString() mặc định từ lớp Object, phương thức này chỉ trả về một chuỗi mô tả chứa tên lớp và địa chỉ tham chiếu của đối tượng.

Không có nhận xét nào:
Đăng nhận xét