就我們所知道的,java中有子類和父類,子類由于繼承父類而形成,那么父類還有沒有父類呢?答案是有了,父類的父類就是object類,一切父類都繼承了它,那么根據繼承的屬性,每一個子類都有一個object類,然而,我們不是蒙目地去繼承它,繼承它是有目的的,我們要使用里面定義的方法,object里面定義了很多方法,詳情參考API幫助文檔,下面我介紹object里面兩種方法,繼承而來的方法往往是需要我們重寫的。
第一、比如里面的比較方法,用來比較兩個對象的地址是否相等,實際比較地址是哈希地址,而這開發中是往往用不到的,我們更多的用到的是比較對象里面的內容,比如數據成員是否相同,由于是繼承了object,我們可以將它重寫,把原定object的方法覆蓋掉,一般都這樣做,下面,看具體代碼。其中還涉及到向上轉型,向下轉型的知識,具體看我以前的播客。還有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:是所有對象的直接后者間接父類,傳說中的上帝。 該類中定義的肯定是所有對象都具備的功能。 Object類中已經提供了對對象是否相同的比較方法。 如果自定義類中也有比較相同的功能,沒有必要重新定義。 只要沿襲父類中的功能,建立自己特有比較內容即可。這就是覆蓋。 */ 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); //輸出語句打印對象時,會自動調用對象的toString方法。打印對象的字符串表現形式。 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的簡單使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。