`
chaoyi
  • 浏览: 290574 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Object类

 
阅读更多

本章目标
掌握Object类的作用
掌握Object类中toString()、equals()方法的作用
掌握Object接收引用数据类型的操作

 

Object类
在Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object类的子类。如下两种代码表示的含义都是一样的:
——class Person extends Object{}
——class Person{}


Object类中的主要方法

 

toString()方法
在直接输出对象的时候会默认调用类中的toString()方法

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() 输出:J020611.ObjectDemo01.Demo@7150bd4d
 * 加上 toString() 输出:J020611.ObjectDemo01.Demo@7150bd4d
 * */
}

 

应用toString()方法取得对象内容

class Person{//定义 Person 类
	private String name;//定义 name 属性
	private int age;//定义 age 属性
	public Person(String name, int age){//通过构造设置属性内容
		this.name = name;
		this.age = age;
	}
	public String toString(){//此处覆写 toString() 方法
		return "姓名:"+this.name+"; 年龄:"+this.age;
	}
}
public class ObjectDemo02 {
	public static void main(String[] args) {
		Person per = new Person("chaoyi",30);//实例化 Person 对象
		System.out.println("对象信息:"+per);//打印对象调用 toString()方法
		//相当于 System.out.println("对象信息:"+per.toString());
	}
/*结果:
 * 对象信息:姓名:chaoyi; 年龄:30
 * */
}

 

equals()方法
equals()方法的主要功能是进行对象的比较操作。
String本身也是Object类的子类,所以已经覆写了此方法

 

对象的比较操作

class Person{//定义 Person 类
	private String name;//定义 name 属性
	private int age;//定义 age 属性
	public Person(String name, int age){//通过构造设置属性内容
		this.name = name;//为 name 属性赋值
		this.age = age;//为 age 属性赋值
	}
	public boolean equals(Object obj){//覆写 Object 类中的 equals() 方法
		if(this == obj){//如果两个对象的地址相等,则肯定是同一个对象
			return true;
		}
		if(!(obj instanceof Person)){//判断传进来的对象是否是 Person 的实例
			return false;//如果不是,则直接返回 false
		}
		Person per = (Person)obj;//将传进来的对象向下转型
		if(per.name.equals(this.name)
				&&per.age == this.age){//逐个属性比较,看是否相等
			return true;//对象内容相等
		}else{
			return false;//对象内容不等
		}
	}
	public String toString(){//此处覆写 toString() 方法
		return "姓名:"+this.name+"; 年龄:"+this.age;
	}
}
public class ObjectDemo03 {
	public static void main(String[] args) {
		Person per1 = new Person("chaoyi",30);
		Person per2 = new Person("chaoyi",30);
		System.out.println(per1.equals(per2)?"是同一个人!":"不是同一个人!");
		System.out.println(per1.equals("Hello")?"是同一个人!":"不是同一个人!");
	}
/*结果:
 * 是同一个人!
 * 不是同一个人!
 * */
}

 

接收任意引用类型的对象
既然Object类是所有对象的父类,则肯定所有的对象都可以向Object进行转换,在这其中也包含了数组和接口类型,即:一切的引用数据类型都可以使用Object进行接收。

 

使用Object接收接口实例

interface A{//定义接口 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;//对象向上转型
		A x =(A)obj;//对象向下转型
		System.out.println(x.getInfo());
	}
/*结果:
 * Hello World!!!
 * */
}

 

使用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] +"、");
			}
		}
	}
/*结果:
 * 1、3、5、7、9、
 * */
}

 

 

 

 

 

 

 

 

  • 大小: 21.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics