21、面向对象编程中的对象特性与递归算法解析

面向对象编程中的对象特性与递归算法解析

1. 自定义类对象的相等性

在编程中,对象的相等性判断是一个重要的概念。对于类库中自带的类,其对象的相等性判断有默认的规则。但对于自定义类,情况则有所不同。

Person 类为例,创建两个初始化的 Person 对象并进行相等性测试:

| p1 p2 |
p1 := Person new.
p2 := Person new.
p1 = p2
"Print it: false"

这里虽然两个变量指向的 Person 对象在所有实例变量上可能相同,但由于没有为 Person 类定义“=”方法,测试使用的是从 Object 类继承的方法,该方法测试的是对象的标识。

程序员可以任意定义自定义类的两个对象何时应被视为相等。如果要定义自定义类实例的相等性,还需要定义 hash 方法。每个对象都能理解 hash 消息, Object 类中包含这样的方法,它实现了一个哈希函数,将对象映射到一个整数子集。哈希函数必须满足相等的对象( = )被映射到相同整数的要求。

例如,若要基于姓氏的相等性来判断 Person 类实例的相等性,需要定义以下实例方法:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值