2018/01/08JAVA 基础 / 接口与继承/Object类——[思考?question:Object类的方法有什么用?为什么不直接在类中设计方法?

Object类是所有类的父类

 声明一个类的时候,默认是继承了Object 。例如public class Hero extends Object

 

 Object的方法

  toString()finalize()equals()hashCode()线程同步相关方法getClass()

 

Object方法的作用

 Object方法的作用请看下面代码的注释:

 1 package test;
 2 
 3 public class Item {
 4     
 5     String name;
 6     
 7     int price;
 8  
 9     public String toString(){
10         
11          return "叫做 " + name + " 的物品,其价格是 " + price;
12     }
13      
14     public void finalize(){
15         System.out.println("当前对象" + name + "正在被回收");
16     }
17     
18     public boolean equals(Object o){
19         if (o instanceof Item) {
20             Item t = (Item)o;
21             return t.price == this.price;
22         }
23         return false;
24     }
25     
26     public static void main(String[] args) {
27         
28         Item h = new Item();
29         h.name = "garen";
30         h.price = 13;
31 
32         Item h2 = new Item();
33         h2.name = "modit";
34         h2.price = 130;
35 /**
36  * 第40行可以省略
37  * ∵通过 41行System.out.println打印对象h就是打印该对象的toString()返回值
38  * 优点1、可见,不需要有很清晰写出引用调用方法就可以实现打印
39  */
40         //System.out.println(h.toString());
41         System.out.println(h);
42 /**
43  * 同理第45~47行调用回收方法也不需要有很清晰写出引用调用方法        
44  */
45         for (int i = 0; i < 80000; i++) {
46             h = new Item();
47         }
48 /**
49  * Object类中的equals方式默认的是判断引用是否指向同一个对象,故可以在子方法Hero中重写该方法
50  * 第52行是比较的两个引用所指向的对象的内容是否一致        
51  */
52         System.out.println(h.equals(h2));
53     }
54     
55 }

 

  综上,相较于其他父类,Object类的方法的优势体现在:

  通过子类Hero对父类Object的重写,可以不需要直接调用Hero重写的方法,就能实现预期效果。

  自然地,类Hero在某些方法上【比如tostring方法】就没必要另行自主设计了,但是涉及到其他方法时是否就不一定呢?由于目前还没有这方面的经验,这是值得思考的。

 

posted on 2018-01-08 17:30  梧桐雨与荔枝  阅读(178)  评论(0编辑  收藏  举报

导航