复制
收藏
提问
知识库

5 里氏代换原则 所有引用基类的地方必须能透明的使用其子类对象。 里氏替换原则包含了四层意思: 第一:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 第二:子类可以增加自己特有的方法。 第三: 覆盖或实现父类的方法时输入参数可以被放大 第四:覆盖或实现父类的方法时输出结果可以被缩小 例如: 游戏里面士兵用枪射击的类图: 思考一下,如果我们有一个玩具枪,该怎么去定义呢?父类的某些方法在子类中已经发生“畸变”, 则建 议断开父子继承关系, 采用依赖、聚合、组合等关系代 替继承。 可以在 AbstractToy 中声明将声音、形状都委托给 AbstractGun 来处理。 代码的截图:

纯真画家
1个月前
全网
文档
学术
百科
知识库
时间不限
自动

理解问题5 里氏代换原则 所有引用基类的地方必须能透明的使用其子类对象。 里氏替换原则包含了四层意思: 第一:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 第二:子类可以增加自己特有的方法。 第三: 覆盖或实现父类的方法时输入参数可以被放大 第四:覆盖或实现父类的方法时输出结果可以被缩小 例如: 游戏里面士兵用枪射击的类图: 思考一下,如果我们有一个玩具枪,该怎么去定义呢?父类的某些方法在子类中已经发生“畸变”, 则建 议断开父子继承关系, 采用依赖、聚合、组合等关系代 替继承。 可以在 AbstractToy 中声明将声音、形状都委托给 AbstractGun 来处理。 代码的截图:

已完成理解5 里氏代换原则 所有引用基类的地方必须能透明的使用其子类对象。 里氏替换原则包含了四层意思: 第一:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 第二:子类可以增加自己特有的方法。 第三: 覆盖或实现父类的方法时输入参数可以被放大 第四:覆盖或实现父类的方法时输出结果可以被缩小 例如: 游戏里面士兵用枪射击的类图: 思考一下,如果我们有一个玩具枪,该怎么去定义呢?父类的某些方法在子类中已经发生“畸变”, 则建 议断开父子继承关系, 采用依赖、聚合、组合等关系代 替继承。 可以在 AbstractToy 中声明将声音、形状都委托给 AbstractGun 来处理。 代码的截图:

展开阅读网页

里氏代换原则的核心是所有引用基类的地方必须能透明地使用其子类对象。1

具体包括:

  1. 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。1
  2. 子类可以增加自己特有的方法。1
  3. 覆盖或实现父类的方法时,输入参数可以被放大。1
  4. 覆盖或实现父类的方法时,输出结果可以被缩小。1

例如,游戏中的士兵用枪射击类图,如果有一个玩具枪,可以在 AbstractToy 中声明将声音、形状都委托给 AbstractGun 来处理,断开父子继承关系,采用依赖、聚合、组合等关系代替继承。1

更专业一些
转笔记
专业
5 里氏代换原则 所有引用基类的地方必须能透明的使用其子类对象。 里氏替换原则包含了四层意思: 第一:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 第二:子类可以增加自己特有的方法。 第三: 覆盖或实现父类的方法时输入参数可以被放大 第四:覆盖或实现父类的方法时输出结果可以被缩小 例如: 游戏里面士兵用枪射击的类图: 思考一下,如果我们有一个玩具枪,该怎么去定义呢?父类的某些方法在子类中已经发生“畸变”, 则建 议断开父子继承关系, 采用依赖、聚合、组合等关系代 替继承。 可以在 AbstractToy 中声明将声音、形状都委托给 AbstractGun 来处理。 代码的截图:
里氏代换原则的应用场景?
面向对象设计的7大原则是什么?
如何实现高内聚低耦合的设计?

以上内容由AI搜集生成,仅供参考

在线客服