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();
}
}