کلاس Object، برای تمامی کلاس های جاوا، کلاس پدر حساب می شود. به بیان دیگر، تمامی کلاس های دیگر از آن ارث بری میکنند.
یکی از کاربردهای کلاس Object موقعی است که می خواهید به یک کلاس اشاره کنید اما نوع آنرا نمی دانید. با استفاده از Upcasting می توانید به کلاس Object اشاره کنید. می توانید از متد getObject استفاده کنید و شیای که بازگردانده می شود را در یک شی از نوع Object قرار دهید. نگاه کنید:
Object obj=getObject();//we don't know what object will be returned from this method
کلاس Object دارای متدهایی می باشد که باعث ایجاد رفتارهایی یکسان در اشیا شده است.
از متدهای کلاس Object می توان به موارد زیر اشاره کرد:
متد | توضیح |
public final Class getClass() | کلاسی که شی از آن ساخته شده است را برمی گرداند. از این کلاس می توان برای پیدا کردن متادیتا استفاده کرد |
public int hashCode() | عدد کد هش را برای این شی برمی گرداند. |
public boolean equals(Object obj) | دو شی را با هم مقایسه می کند |
protected Object clone() throws CloneNotSupportedException | کپی دقیق شی را می سازد و بر می گرداند |
public String toString() | رشته معرف شی را بر می گرداند |
public final void notify() | ریسهای که منتظر اعلان میباشد را بیدار میکند. |
public final void notifyAll() | تمام ریسههایی که منتظر اعلان می باشند را بیدار می کند |
public final void wait(long timeout)throws InterruptedException | باعث می شود که ریسه کنونی مدت زمانی به میلی ثانیه صبر کند تا پیغام اعلان را از ریسه های دیگر دریافت کند. |
public final void wait(long timeout,int nanos)throws InterruptedException | باعث می شود که ریسه به اندازه میلی ثانیه و نانو ثانیه داده شده صبر کند تا پیغام اعلان را از ریسه های دیگر دریافت کند |
public final void wait()throws InterruptedException | ریسه کنونی تا پیغام اعلان را از ریسه های دیگر دریافت کند، صبر می کند. |
protected void finalize()throws Throwable | قبل از اینکه شی در جمع کننده زباله قرار گیرد آنرا صدا می کند. |
کلون کردن اشیا یا Object cloning روشی است که با استفاده از آن می توان یک کپی دقیق از یک شی بدست آورد. اینترفیس java.lang.Cloneable باید توسط کلاسی که می خواهیم شیای از آن را کلون کنیم پیاده سازی شود. در غیر این صورت با CloneNotSupportedException روبه رو می شویم.
سینتکس:
protected Object clone() throws CloneNotSupportedException
چرا از متد clone() استفاده کنیم؟
استفاده از این روش در مقایسه با ساخت یک شی کاملا کپی توسط کلیدواژه new، بسیار راحت تر می باشد و زمان بسیار کمتری برای اینکار صرف می شود.
با اینکه متد clone() دارای ایراداتی در طراحی می باشد، با اینحال روشی آسان و پرطرفدار برای ساخت شی کپی می باشد. از مزایای آن می توان به موارد زیر اشاره کرد:
کلون کردن اشیا با وجود مزایایی که دارد، ایراداتی نیز دارد که می توان به موارد زیر اشاره کرد:
حال یک مثال استفاده از کلون اشیا ببینیم:
مثال:
class Student18 implements Cloneable{ int rollno; String name; Student18(int rollno,String name){ this.rollno=rollno; this.name=name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ Student18 s1=new Student18(101,"amit"); Student18 s2=(Student18)s1.clone(); System.out.println(s1.rollno+" "+s1.name); System.out.println(s2.rollno+" "+s2.name); }catch(CloneNotSupportedException c){} } }
خروجی:
Output:101 amit 101 amit
همانطور که در کلاس بالا دیدید، به راحتی از شی s1 در s2 کپی کردیم. در صورتی که این کار را دستی و با کمک کلمه کلیدی new انجام میدادیم، زمان قابل توجهی از ما مصرف میشد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.