一、Object
- Object为所有类的父类
- 当一个对象被声明为Object类型的对象所引用时,它无法再赋值个体原来类型的变量。
我们自己定义的类,很多都没有继承的父类,但实际上,java会帮我们隐秘地继承了Object类
哪怕继承了类,类的父类也会继承Object类,这就说明了,Object是每个类都继承了,都有的,所以他是所有类的父类
Object里面有什么呢?
Object{
equals()
getClass()
hashCode()
toString()
... ...
}
我们常常需要重写的,equals 和 toString 等,都是来自于Object类
二、Object与多态
因为Object是所有类的父类,所以Object可以承接所有类型的数据,与所有类产生多态
public class Demo01 {
public static void main(String[] args) {
Object o = 5;
Object str = "hello";
Object usa = new America();
}
}
但为什么不这么做呢?
如果这样写,那么该数据的类型和所有的方法与属性都用不了
public class Demo04 {
public static void main(String[] args) {
Dog aDog = getObject(dog); //编译失败,Object返回失去狗性了
//Dog aDog = (Dog)getObject(dog) 只有强转才行
}
public static Object getObject(Object o){
return o;
}
}
Object 接收的所有东西,需要强转才能恢复原来的样貌功能。
在后续中,泛型、集合等都会Object有着很大的关系