120 01 Android 零基础入门 02 Java面向对象 05 Java继承(下)02 Object类 02 Object类介绍(中) **本文知识点: Object类介绍(中) ** 说明:因为时间紧张,本人写博客过程中只是对知识点的关
120 01 Android 零基础入门 02 Java面向对象 05 Java继承(下)02 Object类 02 Object类介绍(中)
**本文知识点: Object类介绍(中) **
说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信与本人交流,共同进步。
Object类介绍(中)
如果只比较测试类中的2个对象的值是否相同?怎么办?
那就要在Animal父类中重写Java根类Object的equals方法。
在Animal父类中重写Java根类Object的equals方法
测试类中测试重写的equals方法的运行结果
重写equals方法,改变比较规则。
因为Animal父类中重写Java根类Object的equals方法,重写后的equals方法如上,用以比较的是动物对象的名称和月份是否相同。
因为one和two的鱼粉名称完全一致,所以比较的结果为true。(注意:下图中的代码有误了,没有及时更改,此时equals比较的不是引用了,而是对象的值)
在Animal父类中将已经重写Java根类Object的equals方法进行重载
注意:重写equals方法是,判断传入的对象是否为空的步骤非常重要。避免空指针异常
注意:重写equals方法是,判断传入的对象是否为空的步骤非常重要。避免空指针异常。
假如去掉判断传入对象是否为空的if语句,看看会出现什么问题?
在测试类中模拟一下假定传入参数为空的情况,会出现什么样的测试结果。
**注意,因为我们的 Animal two = null; ** 是写在main方法中的,我们只能把two对象直接赋值为null;但如果是进行类之间的方法传参调用的情况下,那么,在参数不赋值的前提下,对象的值默认就是一个null。这点需要记清楚,实际工作中写代码时,需要格外注意这一点。以免引起异常和bug。
测试代码,出现异常
产生的异常是空指针异常,产生异常的位置,在two引用所指向的对象被equals方法调用的TestThree类的第16行。
在Animal类的73行,空的引用调用getName方法时,产生了错误——空指针异常。