Object类(RealFather) -- 最高参数统一化(所有类都可以向上转型成Object类)
Object类是JDK默认提供的一个类,Java中除了Object类,所有类都存在继承关系,默认会继承Object父类
-
toString()-- 取得对象信息 *** 重要 ***
系统输出默认调用对象的toString()方法,输出类名以及对象地址
Object类中的toString()只是简单输出当前所引用的类名以及对象地址。如果想在类中取得本类属性信息,需要覆写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 Test{
public static void main(String[] args){
fun(new Person("Dyson",18));
//StringBuilder本身就有toString()方法
fun("world");
}
public static void fun(Object obj){
System.out.println(obj);
}
}
-
对象比较 -- equals()
范例:实现对象比较 覆写Object类中equals()方法 **** 重要 ****
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
@Override
public boolean equals(Object obj){
//判断obj是否为Person类的对象
if(!(obj instanceof Person)){
return false;
}
//判断当前对象是否与传入对象地址相同
if(this == obj){
return true;
}
//obj确是为Person对象,比较两者属性内容
//向下转型取得Person属性值
Person per=(Person) obj;
return (this.name.equals(per.name))&&(this.age==per.age);
}
}
public class Test{
public static void main(String[] args){
Person per1=new Person("Dyson", 18);
Person per2=new Person("Dyson", 18);
System.out.println(per1.equals(per2));
}
}
- Object接受引用数据类型
Object可以接受所有引用数据类型:数组,类,接口
不包括基本类型
范例:Object接受数组
public class Test {
public static void main(String[] args) {
//Object接受数组对象,向上转型
Object obj=new int[]{3,2,2};
//向下转型,需要强转
int data[]=(int[])obj;
for(int temp:data){
System.out.println(temp+",");
}
}
}
范例:Object接受接口对象
interface Message{
public void print();
}
class MyMessage implements Message{
public void print(){
System.out.println("LYX");
}
public String toString(){
return "Dyson";
}
}
public class Test {
public static void main(String[] args) {
//子类向父接口转型
Message msg=new MyMessage();
//接口向Object转型
Object obj=msg;
((Message) obj).print();
System.out.println(obj);
//强制类型转换
Message tmp=(MyMessage)obj;
tmp.print();
}
}
/*
LYX
Dyson
LYX
*/