软件构造课程笔记7——第7章-面向对象的编程

·接口与实现类的关系是父类和子类,子类应该遵循父类的不变性。

·实际中更倾向于使用接口来定义变量。因为这样可以实现多态。

·接口不应该包含构造函数——它不能实例化。

·接口中不应该出现具体的实现类,这算表示暴露。

·接口中通过静态工厂方法而不是构造函数实现定义变量的需求,注意函数声明中不能出现具体的实现类。

·接口中的每方法在所有类中都要实现,通过default方法,在接口中统一实现某些功能,无需在各个类中重复实现它。

·接口中的三类方法:default方法、静态方法、子类方法,前两种声明与函数体都写,子类方法只写声明即可,在子类中写函数体

·严格继承:子类只能添加新方法,无法重写父类中的部分主要方法,可以重写特例的方法;子类中的方法要在父类中声明;模板模式使用严格继承;这种继承违背了多态的目的。

·重写:方法的重写,参数不能变,不然算是一个新的方法;A a=new B();a.方法调用的是子类中的方法。属性则不一样,a中属性的初始值为A中初始值。

重写的时候,不能改变方法的本意。

重写异常处理时,子类只能抛出比父类更少的异常,或者是抛出更具体的异常。

·一般要么用接口,要么用实现类,基本不用抽象类

·特殊多态——方法重载,在编译阶段决定要具体执行哪个方法(重写是在运行阶段决定)

在子类中,对父类的函数进行重载,A a=new B();a.move(int i)会报错,因为重载在编译阶段,重写在运行阶段,编译阶段决定a调用的是哪个方法就看它的类型(即A),而A中的move没有重载为move(int)的代码,此时程序会报错。

重载的参数列表必须不同,返回值类型可相同可不同,public/private/protected也可相同可不同,异常处理可相同可不同,可以在同一个类内重载,也可在子类中重载。

重载会根据参数列表中的类型进行最佳匹配。

·参数多态——泛型

·子类型多态——不同类型的对象可以统一的处理而无需区分

子类型的规约不能弱化父类型的规约。

·如何把一个类改为immutable类:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值