目录
一、Object类
1、所有class类的共同父类
2、子类继承了Object的所有方法
3、JDK对Object类的扩展
4、注意Object不能接收8大基本类型
二、引用数据类型比较用equals方法
一、Object类
1、所有class类的共同父类
Object类是java中所有类的默认父类,无须使用extends来继承,只要是class声明的类,就都会有共同的父类Object类。(java.lang.Object)
提问:为什么要有Object父类呢?
①因为Object类对所有类的父类,所以就可以使用Object引用来接受所有类型,实现参数最该统一化,java中的所有类型都可以发生向下转型变为Object类型(不包括基本数据类型)。
Object obj1=new Person();
Object obj2=new String();
Object obj3=new Cat();
2、子类继承了Object的所有方法
子类继承了Object的所有方法
之所以System.out,println(任意数据类型)都可以打印输出值,是因为都默认调用该类型的toString方法,Object中存在toString()
3、JDK对Object类的扩展
Onject不仅可是所有类(class声明)的父类,IDK还对Object做了扩展,Object类可以接收所有数据类型(接口,数组,类)
Object类是java中所有类的默认父类,无须使用extends来继承,只要是class声明的类,就都会有共同的父类Object类。(java.lang.Object)
提问:为什么要有Object父类呢?
①因为Object类对所有类的父类,所以就可以使用Object引用来接受所有类型,实现参数最该统一化,java中的所有类型都可以发生向下转型变为Object类型(不包括基本数据类型)。
Object obj1=new Person();
Object obj2=new String();
Object obj3=new Cat();
2、子类继承了Object的所有方法
子类继承了Object的所有方法
之所以System.out,println(任意数据类型)都可以打印输出值,是因为都默认调用该类型的toString方法,Object中存在toString()
3、JDK对Object类的扩展
Onject不仅可是所有类(class声明)的父类,IDK还对Object做了扩展,Object类可以接收所有数据类型(接口,数组,类)
子类继承了Object的所有方法
之所以System.out,println(任意数据类型)都可以打印输出值,是因为都默认调用该类型的toString方法,Object中存在toString()
3、JDK对Object类的扩展
Onject不仅可是所有类(class声明)的父类,IDK还对Object做了扩展,Object类可以接收所有数据类型(接口,数组,类)
Onject不仅可是所有类(class声明)的父类,IDK还对Object做了扩展,Object类可以接收所有数据类型(接口,数组,类)
4、注意Object不能接收8大基本类型
除了8大基本类型之外,所有类型都可以用Object来接收,所有类型都能使用Object来接收。
基本类型和包装类有关。
二、引用数据类型比较用equals方法
java中引用数据类型之间的相等比较使用equals方法,此时使用“==”是在比较地址值
使用Object类中的equals方法,就是在比较这两个属性的地址
除了8大基本类型之外,所有类型都可以用Object来接收,所有类型都能使用Object来接收。
基本类型和包装类有关。
java中引用数据类型之间的相等比较使用equals方法,此时使用“==”是在比较地址值
使用Object类中的equals方法,就是在比较这两个属性的地址
此时想要比较两个student类的属性值是否相等,就需要按照比较规规则重写equals方法
提问:为什么重写时会用到向下转型?
obj时一个Object类型,但是它指向了Student对象,我们要比较的是Student类中的name和score值是否相等,很显然在Object中就不存在这两个属性,所以就需要向下转型把obj还原成Student类型才可以进行比较。
Person per=new China();
per是指向China对象的Person类型,如果需要用到China独有的属性或者方法,就需要把per还原成China类型。



