JAVA中的Object类

来源:互联网 发布:正交矩阵和实对称矩阵 编辑:程序博客网 时间:2024/03/28 17:11

1、Java中所有的类都直接或间接的继承了Object类,常见的class 类名{……}都默认继承了Object类,所以所有的类都可以根据对象多态性向上转化为Object 对象 = new 类名();实际上不仅是类,所有的引用类型的对象都可以用Object接收,如下用Object类接收一个接口的代码:

public class ObjectDemo {//如果接口能用Object接收,应该打印三遍“Person打印”
public static void main(String args[]){
National na = new Cat();
na.print();
Object ob = na;
na.print();
National ona = (National)ob;
ona.print();
}
}
interface National{
public void print();
}
class Cat extends Object implements National{
public void print(){
System.out.println("Person打印");
}
}

程序的执行结果如下:


值得注意的是,数组也是引用数据类型,Object也能接收数组,代码如下:

public class ObjectDemo {//如果数组能用Object接收,应该打印“1,2,3,4,5,6,”
public static void main(String args[]){
int i[] = {1,2,3,4,5,6};
Object o = i;
int x[] = (int[])o;
for(int j = 0 ;j<x.length;j++)
System.out.print(x[j]+",");
}
}

执行结果如下:


2、Object类有三种重要的方法toString()、equals()、hashCode()

(1)toString():常在打印是调用该方法,类需要重写此方法,正常打印情况如下:

public class ObjectDemo {
public static void main(String args[]){
Cat cat  = new Cat("阿欢",2);
System.out.print(cat.toString());
}
}
class Cat{
private String name;
private int old;
public Cat(String name,int old){
this.name = name;
this.old = old;
}
public String toString(){
return "姓名:"+this.name+",年龄:"+this.old;
}
}

代码执行的结果为:


如果此类没有重写toString方法,打印结果如下:


相当于打印new Cat(),由此看出toString实际是要打印对象信息。

(2)、equals():在对象比较时调用,类中需要重写equals()方法,代码如下:

public class ObjectDemo {//如果数组能用Object接收,应该打印“1,2,3,4,5,6,”
public static void main(String args[]){
Cat cat  = new Cat("阿欢",2);
System.out.println(cat.equals("asc"));
System.out.println(cat.equals(cat));
System.out.println(cat.equals(new Cat("阿欢",2)));
}
}


class Cat{
private String name;
private int old;
public Cat(String name,int old){
this.name = name;
this.old = old;
}
public boolean equals(Object j){
if(this == j) //判断是否是同一个类
return true;
if(!(j instanceof Cat))//不是同一类型
return false;
Cat c = (Cat)j;
if(this.name.equals(c.name)&&this.old == c.old)
return true;
else 
return false;

}
}

代码的执行结果如下:


(3)hashcode()方法暂时不作介绍

本文的内容参考了魔乐科技的JAVA教程。



1 0
原创粉丝点击