在java中只有一个类不存在继承关系:Object类。只要定义了一个类,就是继承自Object类。
Object类继承所有子类对象:
class Person(){}
class Demo{
public static void main(string args[]){
Object obj = new Person();
if(obj instanceof Person){
Person per = (Person) obj;
}
}
}
使用Object类接收数组:
class Demo{
public static void main(string args[]){
Object obj = new int[](1,2,3);
if(obj instanceof int[]){
int data[] = (int []) obj;
for(int tmp:data){
System.out.println(tmp);
}
}
}
}
获取对象信息:toString()
对对象调用的输出方法就是toString()方法,所以这个方法调用与不调用效果相同。所以在以后的开发之中对象信息的获得可以直接覆写此方法。
覆写toString()方法
class Person(){
private String name;
private int age;
public Person(String name,int age){
this.name = name;this.age = age;
}
@Override
public String toString(){
return name + " " + age;
}
}
class Demo{
public static void main(string args[]){
Person per = new Person("111",11);
System.out.println(per);//调用覆写,输出 111 11
}
}
对象比较
两个对象一定位于不同的地址,所以==一定false。
如果想使用equals比较,默认情况下只是对两个对象进行地址判断,也会是false,所以要在子类中覆写此方法。
Object中equals覆写
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;this.age = age;
}
@Override
public String toString(){
return name + " " + age;
}
public boolean equals(Object obj){
if(!(obj instanceof Person)){return false;}//obj为非Person
if(obj == null){return false;}//obj为null
if(this == obj){ return true;}//obj为自己
Person per = (Person) obj;
return this.name.equals(per.name) && this.age == age;
}
}
class Untitled {
public static void main(String[] args) {
Person perA = new Person("111",11);
Person perB = new Person("111",11);
System.out.println(perA.equals(perB));
}
}