Tất cả các phương thức của lớp Đối tượng, cộng thêm phương thức toString() - 1

"Chào, Amigo!"

"CHÀO!"

"Hôm nay chúng ta sẽ học lớp Object.
Bạn đã gặp nó rồi, và bạn biết rằng Object là lớp cơ sở cho tất cả các lớp. Nó thực tế không có dữ liệu, nhưng nó có một số phương thức."

"Tại sao nó cần các phương thức? Có ai thực sự tạo ra các thể hiện của lớp Object không?"

"Hãy nhìn nó theo cách này: các phương thức trong lớp Đối tượng là chung cho tất cả các lớp. Nói cách khác, những người tạo ra Java đã xác định một số phương thức mà theo ý kiến ​​​​của họ, mọi lớp nên có và thêm chúng vào lớp Đối tượng."

"Và khi được kết hợp với tính đa hình (khả năng ghi đè các phương thức của lớp Đối tượng trong các lớp dẫn xuất), điều này trở thành một công cụ rất mạnh."

"Hãy xem những phương pháp này là gì:"

Phương pháp Sự miêu tả
public String toString()
Trả về một chuỗi đại diện của các đối tượng.
public native int hashCode()
public boolean equals(Object obj)
Một cặp phương pháp được sử dụng để so sánh các đối tượng.
public final native Class getClass()
Trả về một đối tượng đặc biệt mô tả lớp hiện tại.
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
Các phương thức kiểm soát quyền truy cập vào một đối tượng từ các luồng khác nhau. Để đồng bộ hóa chủ đề.
protected void finalize()
Phương pháp này cho phép bạn giải phóng các tài nguyên gốc không phải Java: đóng tệp, luồng, v.v.
protected native Object clone()
Phương pháp này cho phép bạn sao chép một đối tượng: tạo một bản sao của đối tượng.

"Những phương pháp này có thể được chia thành 6 nhóm. Bạn đã quen thuộc với một số trong số chúng và chúng ta sẽ làm quen với phần còn lại trong các bài học tiếp theo."

"Vì lý do nào đó, tôi không thấy bất cứ điều gì hữu ích ở đây."

"Bạn ơi! Nếu những phương pháp này không quan trọng, thì họ đã không thêm chúng vào từng đối tượng! Vì vậy, tôi khuyên bạn nên xem xét kỹ hơn những phương pháp này là gì và tại sao chúng lại cần thiết. Nếu chúng có vẻ không quan trọng với bạn , thì hoặc là bạn không hiểu điều gì đó hoặc không hiểu điều gì đó một cách chính xác."

"Được. Tôi sẽ nghe kỹ."

"Hãy bắt đầu với phương thức toString().

"Phương pháp này cho phép bạn có được một mô tả văn bản của bất kỳ đối tượng nào. Việc triển khai nó trong lớp Đối tượng rất đơn giản:"

return getClass().getName() + "@" + Integer.toHexString(hashCode());

"getClass() và hashCode() cũng là các phương thức của lớp Object.
Việc gọi phương thức này thường tạo ra kết quả như sau:"

java.lang.Object@12F456

"Mô tả như vậy có ích lợi gì?"

"Mô tả này cho bạn biết lớp của đối tượng mà phương thức được gọi. Bạn cũng có thể phân biệt giữa các đối tượng; các đối tượng khác nhau sẽ có các chữ số khác nhau sau ký hiệu @."

"Nhưng giá trị thực của phương thức này nằm ở chỗ khác. Phương thức này có thể được ghi đè trong bất kỳ lớp nào để trả về một mô tả đối tượng phù hợp hoặc chi tiết hơn."

"Nhưng còn hơn thế nữa. Bởi vì bạn có thể nhận được biểu diễn văn bản của từng đối tượng, Java giúp bạn có thể triển khai hỗ trợ 'thêm' Chuỗi vào đối tượng.
Hãy xem thử:"

Mã số Điều gì thực sự xảy ra
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);

Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

"Vâng, tôi sử dụng nó thường xuyên. Đặc biệt là khi tôi đang viết chương trình hoặc tìm lỗi. Đó là một thao tác hữu ích."