哈工大软件构造-课程知识总结5-面向对象编程与等价性

        面对对象编程(OOP),即是把问题中的各个事物抽象为对象的概念,然后给这些对象赋予属性和方法,以合理的方式让每个对象使用自己的方法来解决问题。下面会来介绍一些OOP中常用的操作。

一。接口

        接口是抽象方法的集合,一个类通过继承接口的方式,从而来继承接口的抽象方法。接口和类属于不同的概念,类描述对象的属性和方法,而接口则包含类要实现的方法。

        接口无法实例化,但可以被实现,一个实现接口的类,必须实现接口中描述的所有方法,否则就必须声明为抽象类。

二.方法重载

        重载(Overload),是指可以用相同的名字编写多个方法,并使其具有不同的参数列表或返回值。用于编写功能类似但参数有差异的方法十分便捷。

三.继承与覆写

        继承是OOP中非常实用的机制,它是两个不同类间的一种关系,A类继承B类,就意味着A类中含有B类的所有功能。其中我们将被继承的B类称为超类(super class),父类(parent class),基类(base class),把继承后生成的A类称为子类(subclass),扩展类(extended class)。

        继承后的A类已经有了B类中的所有成员变量和成员方法,但若是不满足于此,就可以在其中继续编写新的方法。

        继承关系中有几点值得注意:

         1.父类中private的变量和方法是无法被继承的,只有将其改为public或protected才能继承,出于安全性一般建议用protected。

          2.子类调用父类中继承来的内容,可以用Super关键字引用

          3.对父类的方法不满意,可以用覆写的方式更改;但父类中的成员变量不可再更改,即子类中不可定义与父类重名的成员变量。

        覆写(override),是指在子类中定义与父类方法签名完全相同的方法,对其进行新的功能编写并覆盖。

四。多态

        多态就是指同一个行为具有多个不同表现形式或形态的能力,意即同一个接口使用不同实例而执行不同的操作。

        多态的存在有三个必要条件:继承、重写以及父类对子类对象的引用指向。

        当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有则会出现编译错误;如果有,再去调用子类中重写过的同名方法。

        多态的优势在于使程序具有良好的拓展性和可维护性,并可以对所有类的对象进行通用处理。

        基于多态的特点,在调用方法时要注意:编译在左,运行在右。

                                     在调用变量时要注意:编译在左,运行也在左。

        多态同样也有缺点,即不能使用子类的独有功能。

五.等价性

       等价关系,是要满足自反、对称与传递的关系。

       在设计类时,经常需要 重写equals方法以及相应的hashcode方法。

       在重写过程中,就必须遵从等价性约定,满足同一对象多次调用都能返回相同结果,并对空对象返回false.

       对于不可变对象,观察和行为相等是相同的,所以必须重写equals()和hashCode()方法。

       而对可变类型来说,往往倾向于实现严格的观察等价性。Java对其大部分可变数据类型(如Collections)使用观察等价性,如两个List中包含相同顺序的元素,则equals()返回true。部分可变类型用行为等价性。但在有些时候,观察等价性可能导致bug,甚至可能破坏RI。因此实现行为等价性比较好,也就不必重写equals()和hashCode()方法。

        上述即为我对面向对象编程、继承和多态,等价性等概念的一点理解,希望能在巩固自身掌握的同时为其他阅读者带来一点收获。💪

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值