Object 及toString() 方法的重写

Object:

是所有的类的父类  ,Object中所有的方法 , 子类都能使用  ,   接口不是Object子类。

Person:
/*将父类的equals方法 重写
 * 不改变父类的源代码  equals  比较内存地址
 * 比较两个成员变量 变量值相等  返回true   不等  返回false
 * 重写父类的方法equals  自己定义对象的比较方式 
 * */
public class Person extends Object{
     private String name;
     private int age;

     public Person(){}

     public Person(String name,int age){
         this.name=name;
         this.age=age;
     }

     /*
      * 重写Object的toString()方法    没有必要让用户看到内存地址 
      * 要求 :返回值是成员变量的
      * */
 public String toString(){
     return name+":     "+age;
 }

  public boolean equals(Object obj){
      if(this==obj){
          return true;
      }
      //对obj  作非空判断
      if(obj==null){
         return false; 
      }
      if(obj instanceof Person){
          //参数obj 接受到的是 Person对象  才能转型
          //对obj这个参数进行向下转型
          Person p =(Person)obj;
          return this.age==p.age;
      }
      return false;
  }



    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
     
     
}
Test:
public class Test {
   public static void main(String[] args) {
        Person p = new Person("张无忌",18);
        Person p1 = new Person("张san",18);
       boolean e = p1.equals(p1);
       System.out.println(e);
      
       boolean b = p.equals(p1);//重写了父类equals方法    比较年龄   如果不重写  比较内存
       System.out.println(b);
       //调用Person类的方法toString()
       //输出语句 写的是每一个对象    默认就调用toString();
      
       System.out.println(p);
       System.out.println(p1);
}
}
原文地址:https://www.cnblogs.com/duguangming/p/10555032.html