object 类 toString() 和 equals() 的覆写

基本作用:

objiect类是所有类的父类。

任何一个类定义的时候如果没有明确定义了父类的话,默认父类是Object类。

class A extends Object{}

在整个java里面,类的继承关系一直存在的。例如:

String 类

这时候一个好处就出现了,利用Object类可以接受一切类。

Object obj = new Book() ;//向上转型

Obect obj = “Hello”  ; //向上转型

如果不知道参数类型的时候,使用Object是最好的选择

 

 

http://docs.oracle.com/javase/7/docs/api/

可以发现在Object类里面定义一个无参构造方法。

这是为什么呢??

因为Object类是所有类的父类,当对象实例化的时候,一定会默认调用父类的无参构造方法。

他还提供了很多的方法。这些方法很重要。

从严格意义上来讲(一般不遵守) ,任何一个简单Java类都应该覆写Object类的三个方法

1.toString()

2.equals(Object);对象比较方法

3.public int hashCode()

第一个方法:取得对象信息

toString() :

范例:

 

class Book extends Object {}
public class ObjectTest{
    public static void main(String arg[]){
        Book b = new Book() ;
        String s = "hello" ;
        System.out.println(b) ;
        System.out.println(b.toString());
        System.out.println(s) ;
    }
}

观察发现输出的结果第一行和第二行一样。

这是因为输出对象的时候,会自动调用toString() 方法将对象变成字符串输出;

所以,以后在使用的时候要覆写 Object类 的toString() 方法;

class Book  {
    private String title ;
    private double price;
    public Book(String title ,double price){
        this.title = title ;
        this.price = price ;
    }
    public String toString(){
        return "title" + this.title + " , price :" + this.price ;
    }
}
public class ObjectTest{
    public static void main(String arg[]){
        Book b = new Book("Java",19.9) ;
        String s = "hello" ;
        System.out.println(b) ;
        System.out.println(b.toString());
        System.out.println(s) ;
    }
}

此时就会重写了toString()方法。就可以直接输出对象。

 

第二个:对象比较

equalls() ;

    public boolean equals(Object obj){
        if(this == obj) 
            return true ;
        if(obj  == null) 
            return false ;
        if(obj instanceof Book)  //判断是否是Book类型的实例化 
            return false ;
        Book book = (Book) obj ;
        if(this.title.equals(book.title) && this.price == book.price)
            return true ;
    }

 

posted @ 2016-01-12 22:56  式微胡不归  阅读(649)  评论(0编辑  收藏  举报