FaCode Ngôn ngữ Java Lớp Object và Object cloning trong java

FaCode Ngôn ngữ Java

FaCode Ngôn ngữ Java Lớp Object và Object cloning trong java

Lớp Object trong java

Mặc định lớp Object là lớp cha của tất cả các lớp trong java. Nói cách khác nó là một lớp cao nhất trong java.

Sử dụng lớp Object là hữu ích nếu bạn muốn tham chiếu bất kỳ đối tượng nào mà bạn chưa biết kiểu dữ liệu của đối tượng đó. Chú ý rằng biến tham chiếu của lớp cha có thể tham chiếu đến đối tượng của lớp con được gọi là upcasting.

Ví dụ: giả sử phương thức getObject() trả về một đối tượng nhưng nó có thể là bất kỳ kiểu nào như Employee,Student, … chúng ta có thể sử dụng biến tham chiếu của lớp Object để tham chiếu tới đối tượng đó.

FaCode Ngôn ngữ Java

Lớp Object cung cấp một vài cách xử lý chung cho tất cả các đối tượng như đối tượng có thể được so sánh, đối tượng có thể được cloned, đối tượng có thể được notified…

 

Các phương thức của lớp Object

Lớp Object cung cấp các phương thức như trong bảng sau:

Phương thứcMô tả
public final Class getClass()Trả về đối tượng lớp Class của đối tượng hiện tại. Từ lớp Class đó có thể lấy được các thông tin metadata của class hiện tại
public int hashCode()Trả về số hashcode cho đối tượng hiện tại.
public boolean equals(Object obj)So sánh đối tượng đã cho với đối tượng hiện tại.
protected Object clone() throws CloneNotSupportedExceptionTạo và trả về bản sao chép (clone) của đối tượng hiện tại.
public String toString()Trả về chuỗi ký tự đại diện của đối tượng hiện tại.
public final void notify()Trả về chuỗi ký tự đại diện của đối tượng hiện tại.
public final void notifyAll()Đánh thức một luồng, đợi trình giám sát của đối tượng hiện tại.
public final void wait(long timeout)throws InterruptedExceptionLàm cho Thread hiện tại đợi trong khoảng thời gian là số mili giây cụ thể, tới khi Thread khác thông báo (gọi phương thức notify() hoặc notifyAll()).
public final void wait(long timeout,int nanos)throws InterruptedExceptionLàm cho Thread hiện tại đợi trong khoảng thời gian là số mili giây và nano giây cụ thể, tới khi Thread khác thông báo (gọi phương thức notify() hoặc notifyAll()).
public final void wait()throws InterruptedExceptionLàm Thread hiện tại đợi, tới khi Thread khác thông báo (gọi phương thức notify() hoặc notifyAll()).
protected void finalize()throws ThrowableĐược gọi bởi Garbage Collector trước khi đối tượng bị dọn rác.
FaCode Ngôn ngữ Java

______________

Object cloning trong java

Object cloning là cách để tạo ra một bản sao chính xác của một đối tượng bị clone. Phương thức clone() được sử dụng để tạo ra một object mới.

Class của đối tượng mà chúng ta muốn clone phải được implements từ interface java.lang.Cloneable. Nếu chúng ta không implements interface Cloneable, phương thức clone() sinh ra lỗi ngoại lệ CloneNotSupportedException.

Phương thức phương thức clone() được định nghĩa trong lớp Object có cú pháp như sau:

FaCode Ngôn ngữ Java

Tại sao sử dụng phương thức clone()

Phương thức clone () tiết kiệm tác vụ xử lý bổ sung để tạo ra một bản sao chính xác của một đối tượng. Nếu chúng ta thực hiện nó bằng cách sử dụng từ khóa new sẽ mất rất nhiều tiến trình xử lý được thực hiện, đó là lý do tại sao chúng ta sử dụng object cloning.

Lợi ích của object cloning

Giảm thiểu tác vụ xử lý

Ví dụ về phương thức clone() (object cloning)

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Như bạn đã thấy trong ví dụ trên, cả hai biến tham chiếu có giá trị giống nhau. Vì phương thức clone() đã tạo ra một ô nhớ mới và sao chép giá trị của đối tượng này sang đối tượng khác.

Nếu bạn tạo một đối tượng khác bằng cách sử dụng từ khóa new và gán các giá trị của đối tượng khác cho đối tượng vừa tạo ra, nó sẽ mất nhiều tiến trình để xử lý trên đối tượng này. Vì vậy để tiết kiệm tác vụ xử lý ta sử dụng phương thức clone().

FaCode Ngôn ngữ Java

_____________

Khóa học lập trình

7 Java frameworks phổ biến nhất hiện nay

xem thêm

________

FaCode là một seri học tập lập trình, lần này là FaCode ngôn ngữ Java, bằng mọi nỗ lực FaCode sẽ hoàn thành các mục tiêu đề ra trong FaCode Ngôn ngữ Java. Hãy đồng hành cùng FaCode Ngôn ngữ Java và theo dõi chúng tôi nhé. FaCode Ngôn ngữ Java rất mong nhận được lời góp ý từ phía cộng đồng. Share4Happy với phương châm chia sẻ để hạnh phúc.

Related posts

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn về Hibernate trong Java

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn về JSP trong Java

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn servlet.