Java-Object类总结——面向对象(高级篇)

基本作用

  Object类存储在java.lang包中。Object类是Java中所有类的父类,即一个类只要没有明显地继承一个类,则肯定是Object类的子类。

    如下两行代码表示的含义是一样的

class Person extends Object{}
class Person

          Object类的主要方法如下表:

序号 方法名称 类型 描述
1 public Object() 构造 构造方法
2 public boolean equals(Object obj) 普通 对象比较
3 public int hashCode() 普通 取得Hash码
4 public String toString() 普通 对象打印时调用

主要方法

toString()方法
  当程序随机输出一些地址信息时,实例化对象输出是一定会调用Object类中的toString()方法打印内容,所以加不加toString()方法最终的输出结果是一样的。如下代码所示:

class Demo{
	        //定义Demo类,实际上继承了Object类
}
public class ObjectDemo01 {
	public static void main(String[] args) {
		Demo d = new Demo();
		System.out.println("不加toString()输出:" + d);
		System.out.println("加toString()输出:" + d.toString());
	}

}

运行结果:

不加toString()输出:Demo@7852e922
加toString()输出:Demo@7852e922

  但有时可以利用toString()方法的这一特性取得一些对象的信息,如下代码所示:

class Person{
	private String name;
	private int 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("zhangsan",30);
		System.out.println(per.toString());

	}

}

运行结果:

姓名:zhangsan;年龄:30

接收任意引用类型的对象

  既然Object类是所有对象的父类,那么所有对象都可以向Object转换,其中包含了数组和接口。虽然接口不能继承一个类,但依然是Object类的子类,接口是引用数据类型,故可进行向下转型。数组也是引用数据类型,当然,也可以使用Object接收一个数组。

  使用Object接收接口的基本操作方法:

interface A{
	public String get();
}
class B implements A{
	public String get() {
		return "Nice to meet you!";
	}
}
public class ObjectDemo04 {

	public static void main(String[] args) {
		A a = new B();      //为接口实例化
		Object o = a;       //对象向上转型
		A x = (A)o;         //对象向下转型
		System.out.println(x.get());

	}

}

运行结果:

Nice to meet you!

  使用Object接收数组的基本操作方法:


public class ObjectDemo05 {
	public static void main(String[] args) {
		int a[] = {578,614,529};  //定义数组
		Object o = a;            //使用Object接收数组
		print(o);                //传递数组引用

	}
//在使用print()方法输出时先通过instanceof判断类型是否是一个整型数组,然后再进行输出操作
	public static void print(Object o) {  //接收一个对象
		if(o instanceof int[]) {   //判断对象类型
			int x[] = (int[])o;    //向下转型
			for(int i = 0; i < x.length;i ++)  //循环输出
				System.out.println(x[i] + "\t");
		}
		
	}

}

运行结果:

578	
614	
529	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章