Java特殊类之Object类详解

1.Object类概述

Object类是所有类的父类,所有类默认继承Object类,因此所有类的对象都可以使用Object进行接收

例子:使用Object接收所有类的对象

class Person{}
class Student{}
public class Test {
public static void main(String[] args) {
fun(new Person());
fun(new Student());
}
public static void fun(Object obj) {//该方法可以接收所有类的对象
System.out.println(obj);
}
}

2.Object类常用方法

                                                方法名称                                    方法描述
                                  public  Object()                          无参构造为子类服务
                                  public String toString()                                取得对象信息
                                  public boolean equals(Object obj)                                  对象比较

2.1取得对象信息的方法:toString()

默认Object类提供的toString()方法能够得到一个对象的地址

System.out.println()系统输出输入对象时,默认调用该对象的toString方法

System.out.println(obj);
System.out.println(obj.toString());

如果该方法传入的是一般对象,输出该对象的地址编码,如果传入的是String类对象,则输入内容,原因是String类覆写了该方法

例子:覆写toString方法

class Student
2 {
3     String name = "Mary";
4     int age = 20;
5     public String toString()
6     {
7         return "姓名:"+name+",年龄:"+age;
8     }
9 }

2.2比较对象的方法:equals()

Object类中的equals方法默认比较两个对象的地址,需要覆写该方法,才能实现比较两个对象的内容

class Person {
private String name;
private int age;
private double salary;
public Person() {
}
public Person(String name,int age,double salary) {
	this.name=name;
	this.age=age;
	this.salary=salary;
}
//覆写Object的toString方法
public String toString() {
	return "姓名为"+name+"年龄为"+age+"薪资为"+salary;
}
//覆写Object的equals方法
public boolean equals(Object obj) {
	if(obj==null) {
		return false;
	}
	if(this==obj) {
		return true;
	}
	//instanceof的作用是在向下转型之前判断两个类之间是否有继承关系
	if(!(obj instanceof Person)) {//返回false说明obj与Person类没有关系,也就是说obj不是Person类对象
		return false;
	}
	Person person=(Person)obj;//Object类对象向下转型变为Person类对象
	return this.name.equals(person.name)&&this.age==person.age&&this.salary==salary;
}
}
public class Test{
	public static void main(String[] args) {
		Person p1=new Person("A",20,8000);
		Person p2=new Person("A",20,8000);
		System.out.println(p1);//默认调用的是Object类的toString方法,相当于p1.toString()
		//默认的toString方法用来返回一个对象的地址
		System.out.println(p1.equals(p2));//默认调用的是Object类的equals方法
		//默认的equals方法比较是否是同一个对象
		//String类的equals方法也是覆写了Object的这个方法
	}
}

3.接收引用数据类型

Objec类是所有类的父类,它可以接收所有类的对象,同时它也可以接收引用数据类型,包括:类,数组、接口

例子:使用Object接受数组对象

public static void main(String[] args) {
// Object接收数组对象,向上转型
Object obj = new int[]{1,2,3,4,5,6} ;
// 向下转型,需要强转
int[] data = (int[]) obj ;
for(int i :data){
System.out.println(i+"、");
}
}

接口本身不能继承任何类,Object可以接收接口是Java中的强制要求

例子:使用Object接收接口对象

interface IMessage {
public void getMessage() ;
}
class MessageImpl implements IMessage {
@Override
public String toString() {
return "I am small biter" ;
}
public void getMessage() {
System.out.println("hello word");
}
}
public class Test {
public static void main(String[] args) {
IMessage msg = new MessageImpl() ; // 子类向父接口转型
Object obj = msg ; // 接口向Obejct转型
System.out.println(obj);
IMessage temp = (IMessage) obj ; // 强制类型转换
temp.getMessage();
}
}

猜你喜欢

转载自blog.csdn.net/Racheil/article/details/88422179
今日推荐