zoukankan      html  css  js  c++  java
  • 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方法】就没必要另行自主设计了,但是涉及到其他方法时是否就不一定呢?由于目前还没有这方面的经验,这是值得思考的。

  • 相关阅读:
    Vim的分屏功能 | 酷壳 CoolShell.cn
    分享:Hadoop的Python框架指南
    KMP算法之另类图示分析
    C#cookie自动获取工具发布
    tmux Tutorial Split Terminal Windows Easily
    爱上MVC3~将系统的路由设置抽象成对象吧
    DDD~microsoft NLayerApp项目中的层次结构图
    不说技术~难得糊涂
    DDD~基础设施层
    基础才是重中之重~开发人员应用学会用throw
  • 原文地址:https://www.cnblogs.com/lijiehua/p/8243799.html
Copyright © 2011-2022 走看看