父類是否還有父類垦写??彰触?
有的梯投,叫Object類,也叫根類况毅,我們叫他上帝分蓖。是所有對象的超類或父類。
- 該類總定義了所有類都具有的功能尔许,
- 隱式的構造方法
- 所有對對象都具備對象比較功能:equals( 與之比較的對象 ); 是同一個對象就輸出true,不同對象輸出為flase么鹤,當然要用我們自己輸出一下。原理就是比較兩個對象的地址是否相同(對象1 === 對象2 )味廊,java中一切都是指針午磁,所以 對象1 就是地址!毡们!
- 如果想實現(xiàn)不一樣的比較方法,比如值相等即相等昧辽;直接復寫equals( Object obj )方法衙熔,代碼如下:
class Demo{
private int num;
Demo(int num){
this.num = num;
}
//重寫Object類的equals方法,讓值相同搅荞,對象就相同红氯;值不同,對象也就不同9就础痢甘!
public boolean equals(Object obj){ //Object obj = new Demo() 多態(tài)!\怨薄Hぁ!腔丧!
if(!(obj instanceof Demo)) //判斷obj對象是否是Demo類
return false; //更為合理的做法是用異常處理放椰,拋出異常!愉粤!
Demo d = (Demo)obj; //類型轉換砾医;只能父類對象轉換為子類對像。
return this.num == d.num;
}
}
class Person{ //定義一個Person類衣厘,測試一下不同類的對象比較
}
class ObjectDemo{
public static void main(String[] args){
Demo d1 = new Demo(123);
Demo d2 = new Demo(23);
Person p1 = new Person();
System.out.println(d1.equals(d2));
System.out.println(d1.equals(p1)); //不同類之間的對象比較如蚜,對象一定不同,
System.out.println(d1.equals(d1)); //所以我們在equals(Object obj)的開頭先判斷一下是否是同個對象!4戆睢探赫!
}
}
-
toSring類:返回該對象的字符串,任何對象都能轉換為字符串兴猩,神奇吧F谙拧!倾芝!
- 實現(xiàn):getClass().getName() + ‘@‘ +Integer.toHexString( hashCode() )
- 字符格式: Demo@7852e922(對象類型+@+哈希值(內存地址))
- 哈希值的方法:hashCode();出來的值是十進制的要轉十六進制:Integer.toHexString(十進制的值)
- 地址值一般沒什么意義讨勤;所以一般需要復寫toString( )方法!3苛怼潭千!
-
getClass( )
- Class a = new Class(); //定義類文件
- getClass( ).getName( )
-
hashCode( ) :
- 返回哈希值!=枘颉刨晴!