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 ; }