在JAVA中,所有的類都直接或間接繼承了Java.lang.Object類Object是一個特殊的類,他是所有類的父類,是Java類層中的最高層類。當創建一個類時,他總是在繼承,除非某個類已經指定要從其他類繼承,否則他就是從java.lang.Object類繼承而來,可見所有的類都源于java.lang.Object類,如String,Integer類都是繼承Object類;除此之外,自定義的類也都繼承于Object類。所有的類都是Object子類。
在Object類中主要包括clone(),finalize(),equals(),toString()等方法,其中常用的兩個方法為equals()和toString()方法。由于所有的類都是Object類的子類,所以任何類都可以重寫Object類中的方法。
在Object類中的getClass(),notify(),notifyAll(),wati()等方法不能被重寫,因為這些方法被定義為final類型。
1.getClass()
返回對象執行時的class實例,然后使用此實例調用getName()方法可以取得類的名稱。
getClass().getname();
2.toString()方法
toString()方法的功能是將一個對象返回為字符串形式,他會返回一個String實例。在實際應用中通常重寫toString()方法,為對象提供一個特定的輸出模式。當這個類轉換為字符串或與字符串連接時,將自動調用重寫的toString()方法。
public class demo{
public String toString() {//重寫toString()方法
return "在"+getClass().getName();
}
public static void main(String[] args) {
System.out.println(new demo());
}
}
重寫父類Object的toString()方法,定義一段字符串。單個用戶打印類對象時,將自動調用toString()方法。
3.equals()方法
"=="比較的是兩個對象引用是否相等
equals()判斷兩個字符串對象是否相等
blic class demo{
public static void mian(String[] args){
String s1=”123“;
String s2="123";
system.out.println(s1.equals(s2));//true
system.out.println(s1.equals(s2));//false
}
}
在自定義類中使用equals()方法默認實現是使用"=="運算符比較兩個對象的引用地址,而不是比較對象的內容,所以要想真正做到比較兩個對象的內容,需要自定義類中重寫equals()方法。
此處類比字符串上的equals,此處是系統定義的字符串類
equals(String ?otheString)
String?a=new?String("hello");
String?b=new?String("hello");
?boolean?c=a.equals(b);
System.out.println(c);//true
V v1=new V();
V v2=new V();
system.out.println(V1.equals(2));//false 自定義類默認的是對比兩個對象的引用地址
4.使用Object類接收任意對象的引用
package ceshi;
class Person {
}
public class Test {
public static void main(String[] args) {
????? Object obj = new Person();//一個操作可能接收所有類的對象,那么Object作為參數最適合
Person per = (Person) obj;
}
}
?