软件构造笔记整理二

本文详细介绍了面向对象编程中的重载(overload)、重写(override)概念,以及多态的三种形式:特殊多态、参数化多态和子类型多态。重载关注函数名相同但参数列表不同的方法,重写则涉及子类对父类方法的覆盖。多态允许统一处理不同类型的对象,遵循LSP原则。同时,文章还讨论了等价性的两种类型:引用等价性和对象等价性,以及何时需要重写equals()方法。
摘要由CSDN通过智能技术生成

oop面向对象编程

重载overload、重写overwrite(override)

  • 重载得到重名、参数列表不同的方法
  • 重写是子类对父类函数的重写,函数签名完全相同
  • 子类也能对父类方法重载

多态

三种多态:特殊多态、参数化多态、子类型多态

  • 特殊多态:

​ 源于重载,得到函数名相同,参数列表不同的函数,客户端调用时根据参数列表可以决定调用哪一个。

  • 参数化多态:

​ 源于泛型,思想上使用泛型参数代替具体的类型。(hit-Lab2,用泛型代替String)

作为一个泛型接口便于复用,具体实现时泛型参数被替换为具体类型

  • 子类型多态:

    方便客户端统一处理不同类型的对象而无需区分。

    遵循LSP设计原则,子类对象取代父类对象

等价性

  • 引用等价性==

比较地址是否相同

  • 对象等价性equals()

根据重写的内容比较,通常是比较部分成员变量

等价关系的标准:自反、传递、对称,用以衡量重写的equals()的质量

对于不可变类型,需要重写equals()方法(与hashcode方法)

对于可变类型,不需要重写equals()方法,但要注意观察等价性、行为等价性

  • 观察等价性:

    状态不变,两个对象看起来是否一致。包括observer方法

  • 行为等价性:

    调用对象的任何方法都展示出一致的结果。包括mutator、producer、observer方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值