对违反里氏替换原则的两个类,可以采用的候选解决方案正确的是( )。
A: 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。
B: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。
C: 区分是“is-a”还是“has-a”。如果是“is-a”,可以使用继承关系,如果是“has-a”应该改成组合关系。
D: 将B到A的继承关系改成组合关系。
A: 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。
B: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。
C: 区分是“is-a”还是“has-a”。如果是“is-a”,可以使用继承关系,如果是“has-a”应该改成组合关系。
D: 将B到A的继承关系改成组合关系。
举一反三
- 对于违反里氏替换原则的两个类A和B,可以采用的候选解决方案是() A: 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程 B: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题 C: 将B到A的继承关系改成组合关系 D: 区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-a,应该改成组合或聚合关系
- 对于违反里氏替换原则的两个类A和B,可以来用的候选解决方案中,正确的是()。 A: 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程 B: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题 C: 将B到A的继承关系改成组合关系 D: 区分是“Is-a”还是“Has-a”。如果是Is-a,可以使用继承关系,如果是 Has-a,应该改成组合或聚合关系
- (3-6)类A是类B的父类,如果这2个类违反里氏替换原则,可以采用的候选解决方案错误的是( ) A: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。 B: 将B到A的继承关系改成关联关系。 C: 区分是“Is-a”还是”Has-a”。如果是“Is-a”,可以使用继承关系,如果是”Has-a”应该改成关联关系 D: 以上方案错误
- 对违反里氏替换原则的两个类M和N,可以采用的候选解决方案正确的是( )。 A: 创建一个新的抽象类W作为两个具体类的超类,将M和N共同的行为移动到W中,从而解决M、N行为不完全一致的问题。 B: 将M和N的关系改为委派关系。 C: 区分是“is-a”还是“has-a”,前者使用继承关系,后者使用委派关系。 D: 以上方案均错。
- 下列__________陈述是正确的? A: 继承为两个类之间的is-a关系建模。 B: 强大的is-a关系描述了两个类之间的直接继承关系。 C: 弱is-a关系描述类具有某些属性。 D: 强大的is-a关系可以使用类继承来表示。 E: 弱is-a关系可以使用接口表示。