scala的对象创建,对象所属类,对象相等性判断,覆写equals

scala对象创建

第三种方式可以用于解决使用非 new 关键字创建对象的问题。
(1)new:使用 new 关键字创建类的对象。
(2)伴生对象:使用 object关键字创建一个单例对象。
(3)apply:apply是一个方法,需要在伴生对象中实现这个方法。

scala对象所属类

在Scala中有两种方式判断对象所属的类,分别如下:
 

(1)getClass:

        使用反射机制判断Scala对象所属的类。假设判断对象A和对象B是否对象所属类型属于同一个类,通过A.getClass=B.getClass的方式判断是否相等,A.getClass表示A对象所对应类的反射对象,B.getClass表示B对象所对应类的反射对象。如果这两个对象的反射对象相等,那么这两个对象一定属于同一个类。
 

(2)isInstanceof:

        判断对象是否属于某一个类型,A.isInStanceof[B]表示判断对象A是 否属于类型B,实际上是判断A是否是B或者B的子对象。如果返回true,则表示A是B的子对象;来返回 fase,则表示A不是B的子对象。使用 isInstanceof进行判断时,A表示对象,B表示类型。
 

scala对象相等性判断


在介绍如何判断Scala对象是否相等之前,先来了解一下Java中判断两个对象是否相等的方式。Java中的类型分为两大类,一种是基本类型,主要存储的是数值,使用==的方式判断两个值是否相等;另一种是引用类型,在引用类型中有两种比较方式,第一种方式是使用==比较引用的是否是同一个对象,第二种方式是使用自定义的equals方法比较两个对象的引用是否相等。
 

在Scala中有三种方法判断对象的相等性,这三种方法主要分为两大类,第一种和第二种为一类,第三种方法为另外一类。在大多数情况下(非空),equal方法和==比较的内容是相同的。

三种判断方法如下:
(1) equal方法:相当于Java 中的equals方法。

(2) == 与 !=:相当于Java中的equals方法。

(3) eq 与 ne:相当于Java中的引用(使用==判断引用)。

scala覆写equals

在重写equals方法时,需要满足以下几个条件:

(1)方法的名字不可以改变。
(2)参数列表一定要相同,参数类型是Any类型。

(3)重写方法时需要使用 override 关键字。

2. 覆写原则
在重写equals 方法时,除了需要满足不同的要求之外,还需要符合方法覆写的原则。覆写原则如下:
(1)反射性:在比较对象 x 和对象 y 是否相等时,对象 × 调用 equals 方法与自身相比时,结果一定返回 true,即 x.equals(x)的结果是 true。
(2)对称性:如果x.equals(y)的结果为true,那么y.equals(x)的结果一定也是true.
(3)过渡性:如果x.equals(y)=true, y.equals(z)=true,那么x.equals(z)=true
(4)非空性:如果 x 是一个非空的元素,那么 x.equals(null)结果返回false


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值