"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ả |
---|---|
|
Trả về một chuỗi đại diện của các đối tượng. |
|
Một cặp phương pháp được sử dụng để so sánh các đối tượng. |
|
Trả về một đối tượng đặc biệt mô tả lớp hiện tại. |
|
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ủ đề. |
|
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. |
|
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 |
---|---|
|
|
|
|
|
|
"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."
GO TO FULL VERSION