Object类是所有类的父类,如果一个类没有明确的继承自另外一个类,则肯定继承Object类。
class Demo{}
等价于以下的代码:
class Demo extends Object{}
那么既然Object类是所有类的父类,那么就意味着,所有类的对象都可以使用Object接收。
那么在开发中,如果要想编写一个完整的类,应该最少覆写Object类中的以下几个方法:
· <b>toString</b>:public Sting toString(),对象打印的时候默认调用
· <b>equals</b>:public boolean equals(Object obj),对象比较
· <b>hashCode</b>:public int hashCode()
<b>1</b><b>、 toString()</b><b>方法是在对象打印的时候默认调用的</b>
class Person{
};
public class Demo13{
public static void main(String artgs[]){
Person p = new Person() ;
System.out.println(p) ;
}
以上程序打印的结果为:
Person@757aef
如果在以上打印的时候把打印语句编写为:“System.out.println(p.toString()) ;”,则效果与之前是一样的,那就证明,在打印对象的时候实际上调用toString()方法,是默认调用的。此方法为Object。
如果现在在Person类中覆写了toString()方法:
public String toString(){
return "HELLO WORLD!!!" ;
则打印结果为:
HELLO WORLD!!!
实际上可以在toString()中编写更多的输出内容,如:以下代码:
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ;
return "姓名:"+this.name+",年龄:"+this.age ;
Person p = new Person("张三",30) ;
<b>2</b><b>、 equals</b><b>:对象比较</b>
是对象比较的方法,String是Object的子类,所以Strin本身已经根据自己的情况覆写好了equals方法了。
之前讲解过?如何区分两个对象是否一样?实际上这样的方法,应该写在equals之中。
public boolean equals(Object obj){
if(this==obj){
return true ;
}
if(!(obj instanceof Person)){
return false ;
Person p = (Person)obj ;
if(this.name.equals(p.name)&&this.age==p.age){
}else{
public class Demo14{
Person p1 = new Person("张三",30) ;
Person p2 = new Person("张三",30) ;
System.out.println(p1.equals(p2)) ;
本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/96926,如需转载请自行联系原作者