对于单一职责原则,我的建议是接口一定要做到单一职责,类的设计尽量做到只有一个 原因引起变化
里氏替换原则的定义:
只要父类能出现的地方子类就可以出现,而且替换为子类不会产生任何错误和异常,使用者不需要知道是父类还是子类,反过来就不行了,有子类出现的地方,父类未必能适应
继承优点:
代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性,提高代码重用性,提高代码的可扩展性继承缺点: 3. 继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法 4. 降低了代码的灵活性 5. 增强了耦合性,父类的常量、变量和方法被修改时,需要考虑子类的修改,有时候改动量会很大
输出结果为 父类被执行。。。
父类方法的输入参数是HashMap类型,子 类的输入参数是Map类型,也就是说子类的输入参数类型的范围扩大了,子类代替父类传递 到调用者中,子类的方法永远都不会被执行。这是正确的,如果你想让子类的方法运行,就 必须覆写父类的方法。大家可以这样想,在一个Invoker类中关联了一个父类,调用了一个父 类的方法,子类可以覆写这个方法,也可以重载这个方法,前提是要扩大这个前置条件,就 是输入参数的类型宽于父类的类型覆盖范围。这样说可能比较难理解,我们再反过来想一 下,如果Father类的输入参数类型宽于子类的输入参数类型,会出现什么问题呢?会出现父 类存在的地方,子类就未必可以存在,因为一旦把子类作为参数传入,调用者就很可能进入 子类的方法范畴。
覆写或实现父类的方法时输出结果可以被缩小