在Java中一切的类都是以继承的关系存在的,
class Person{}如果一个类在定义时,没有明确指明继承那个类,则默认继承Object类。
class Person extends Object{}
class Demo{ // 定义Demo类,实际上就是继承了Object类 }; public class ObjectDemo01{ public static void main(String args[]){ Demo d = new Demo() ; // 实例化Demo对象 System.out.println("不加toString()输出:"+d) ; System.out.println("加上toString()输出:"+d.toString()) ; } };以上代码运行的结果:加不加toString()完成的功能都是一样的。证明了对象在打印的时候一定会调用toString()方法,是默认调用的。
class Person{ private String name ; // 定义name属性 private int age ; // 定义age属性 public Person(String name,int age){ this.name = name ; this.age = age ; } public String toString(){ return "姓名:" + this.name + ";年龄:" + this.age ; } }; public class ObjectDemo02{ public static void main(String args[]){ Person per = new Person("xiaowu",30) ; // 实例化Person System.out.println("对象信息:" + per) ; } };
equals方法的主要功能是完成两个对象的比较。
class Person{ private String name ; // 定义name属性 private int age ; // 定义age属性 public Person(String name,int age){ this.name = name ; this.age = age ; } public boolean equals(Object obj){ if(this==obj){ // 地址相等 return true ; // 肯定是同一个对象 } if(!(obj instanceof Person)){ // 不是Person对象 return false ; } Person per = (Person) obj ; // 向下转型 if(per.name.equals(this.name)&&per.age == this.age){ return true ; // 依次比较内容 }else{ return false ; } } public String toString(){ return "姓名:" + this.name + ";年龄:" + this.age ; } }; public class ObjectDemo03{ public static void main(String args[]){ Person per1 = new Person("xiaowu",30) ; // 实例化Person Person per2 = new Person("xiaowu",30) ; // 实例化Person System.out.println(per1.equals(per2)?"是同一个人!" : "不是同一个人!") ; System.out.println(per1.equals("hello")?"是同一个人!" : "不是同一个人!") ; } };
Object类是所有类的父类,所有类的对象都可以使用Object接收,Object类不光可以接收对象,还可以接收任意的引用数据类型(类、接口、数组)。
使用Object接收接口实例:
interface A{ public String getInfo(); } class B implements A{ public String getInfo(){ // 覆写方法 return "Hello World!!!" ; } }; public class ObjectDemo04{ public static void main(String args[]){ A a = new B() ; // 向上转型,为接口实例化 Object obj = a ; // 使用Object接收,向上转型 A x = (A)obj ; // 向下转型 System.out.println(x.getInfo()) ; } };
使用Object接收数组实例:
public class ObjectDemo05{ public static void main(String args[]){ int temp[] = {1,3,5,7,9} ; // 定义数组 Object obj = temp ; // 使用Object接收数组 print(obj) ; } public static void print(Object o){ if(o instanceof int[]){ // 判断是否是整型数组 int x[] = (int[])o ; for(int i=0;i<x.length;i++){ System.out.print(x[i] + "\t") ; } } } };
总结: