object类:(可以接收所有引用类型)
object类是所有类的父类,所有类默认继承object类。
toString():取得对象信息(hash码)
System.out.println()系统输出对象时,默认会调用该对象的toString(),
若自定义类需要进行内容的输出,需要覆写toString()
使用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);
}
}
equals():比较两个对象内容
object类提供的equals默认比较两个对象的地址是否相同。
public boolean equals (Object obj){
//判断地址是否相等
if (obj=this){
return true;
}
//判断传进来的对象不是Person的对象
if(!obj instanceof Person){
return false;
}
//此时需要比较两个Person对象的内容
//需要向下转型转回Person对象后比较两者的属性内容
Person per=(Person) obj;
return this.age=per.age && this.name.equals(per.name);
}
object类可以接收所有引用类型,包括接口与数组。
object类是参数的最高统一类型。
覆写toString()方法
class Person{
private String name ;
private int age ;
public Person(String name, int age) {
this.age = age ;
this.name = name ;
}
@Override
toString()的核心目的在于取得对象信息。
String作为信息输出的重要数据类型,在Java中所有的数据类型只要遇见了String并且执行了+,那么都要求将其变
为字符串后连接,而所有对象要想变为字符串就默认使用toString()方法。
public String toString() {
return “姓名:”+this.name+",年龄:"+this.age ;
}
}
class Student{}
public class Test {
public static void main(String[] args) {
fun(new Person(“yuisama”,25) );
fun(“Hello”);
}
public static void fun(Object obj) {
System.out.println(obj.toString()); // 默认输出对象调用的就是toString()方法
}
}
使用Object接收接口对象
Object真正达到了参数的统一,如果一个类希望接收所有的数据类型,就是用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(“比特欢迎你”);
}
}
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();
}
}