java中的API,学习object的类中equals()方法中的问题,

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33322074/article/details/86346226

一、什么是API

即:Application Programing interface应用程序接口。就是javajdk中提供给我们使用的类,已经封装好的,直接拿来用就行了。

二、Object类

object类是所有类的父类,在lang包中,lang包不用导入。

接口中没有构造方法,全是抽象方法。   

三、equals()方法学习中遇到的问题。

第一个问题:利用多态向下转型,进行比较对象中的年龄。

方法equals()传递的是对象。p1,p2都是对象的地址,对象地址肯定是不同的,b变量的值必为false。但是有个问题,如果你想比较对象中的年龄,该如何比较呢?

1、首先要重写equals()方法,并提出问题。

用this.age==obj.age作比较判断。但是有个问题,因为方法接收的参数是Object 基类。基类有个问题。

age是子类特有的变量。解决这个问题,必须做向下转型。

2、解决方案,对引用变量obj做向下转型。

这就搞定了子类特有变量的比较。

3、又出现了一个问题。

既然object类是所有类的父类,那么传递一个其他类object也能接收啊。

因为array对象无法向下转型为Person类。为什么p2能转成Person类,array对象就不能呢?因为p2本身就是Person类。array类跟Person类根本没有关系,他们是平等关系都是引用类。肯定会报错。会出现类转换异常。

4、解决方案。

对方法进行健壮性判断。instanceof关键字判断是不是要的类

5、又出现了一个问题

如果传过来的参数是null.也能通过instanceof关键字的判断。如何处理?

增加一个判空条件。

即:

通过判空条件解决问题。

6、还可以增加一个健壮性。

即:如果传过来的参数对象正好和要比较的参数对象相同,那就不用判断了。因此再增加一个相同的判断。

猜你喜欢

转载自blog.csdn.net/qq_33322074/article/details/86346226