就我們所知道的,java中有子類和父類,子類由于繼承父類而形成,那么父類還有沒有父類呢?答案是有了,父類的父類就是object類,一切父類都繼承了它,那么根據(jù)繼承的屬性,每一個(gè)子類都有一個(gè)object類,然而,我們不是蒙目地去繼承它,繼承它是有目的的,我們要使用里面定義的方法,object里面定義了很多方法,詳情參考API幫助文檔,下面我介紹object里面兩種方法,繼承而來(lái)的方法往往是需要我們重寫的。
第一、比如里面的比較方法,用來(lái)比較兩個(gè)對(duì)象的地址是否相等,實(shí)際比較地址是哈希地址,而這開發(fā)中是往往用不到的,我們更多的用到的是比較對(duì)象里面的內(nèi)容,比如數(shù)據(jù)成員是否相同,由于是繼承了object,我們可以將它重寫,把原定object的方法覆蓋掉,一般都這樣做,下面,看具體代碼。其中還涉及到向上轉(zhuǎn)型,向下轉(zhuǎn)型的知識(shí),具體看我以前的播客。還有tostring()方法是返回類名+哈希值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
/* Object:是所有對(duì)象的直接后者間接父類,傳說(shuō)中的上帝。 該類中定義的肯定是所有對(duì)象都具備的功能。 Object類中已經(jīng)提供了對(duì)對(duì)象是否相同的比較方法。 如果自定義類中也有比較相同的功能,沒有必要重新定義。 只要沿襲父類中的功能,建立自己特有比較內(nèi)容即可。這就是覆蓋。 */ class Demo //extends Object { private int num; Demo(int num) { this.num = num; } public boolean equals(Object obj)//Object obj = new Demo(); { if(!(obj instanceof Demo)) return false; Demo d = (Demo)obj; return this.num == d.num; } /* public boolean compare(Demo d) { return this.num==d.num; } */ public String toString() { return "demo:" +num; } } class Person { } class ObjectDemo { public static void main(String[] args) { Demo d1 = new Demo( 4 ); System.out.println(d1); //輸出語(yǔ)句打印對(duì)象時(shí),會(huì)自動(dòng)調(diào)用對(duì)象的toString方法。打印對(duì)象的字符串表現(xiàn)形式。 Demo d2 = new Demo( 7 ); System.out.println(d2.toString()); //Demo d2 = new Demo(5); //Class c = d1.getClass(); // // System.out.println(c.getName()); // System.out.println(c.getName()+"@@"+Integer.toHexString(d1.hashCode())); // System.out.println(d1.toString()); //Person p = new Person(); ///System.out.println(d1.equals(p)); } } |
以上這篇java_object的簡(jiǎn)單使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。