这次分享着重分享一下自己对java学习中一些小知识点的理解
lsp原则:
面向对象设计原则之一,主要内容:
原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
简要概括为:
(1)子类型可以增加方法,但是不可以删除基类的方法,子类型需要实现抽象类型中的所有未实现方法
(2)当子类覆盖或实现父类的方法时,方法的返回值要比父类更严格。
(3)当子类覆盖或实现父类的方法时,方法的形参要比父类更为宽松。
(4)子类型中重写方法不能抛出额外的异常
协变:
简要理解为更具体,主要应用在返回值更具体,异常更具体
例子:
逆变:
主要体现在参数不变或者涵盖范围更广。(java不支持逆变,如果去掉@override会视为重载)
例子:
REP:
类的内部表示属性
AF:
表示空间到抽象空间的映射,可以为单射,双射,多射,且一定为满射。
RI:
表示不变量,规定rep符合某种规则
白盒框架:
主要利用继承实现
黑盒框架:
主要利用委托组合实现