对违反里氏替换原则的两个类M和N,可以采用的候选解决方案正确的是( )。
A: 创建一个新的抽象类W作为两个具体类的超类,将M和N共同的行为移动到W中,从而解决M、N行为不完全一致的问题。
B: 将M和N的关系改为委派关系。
C: 区分是“is-a”还是“has-a”,前者使用继承关系,后者使用委派关系。
D: 以上方案均错。
A: 创建一个新的抽象类W作为两个具体类的超类,将M和N共同的行为移动到W中,从而解决M、N行为不完全一致的问题。
B: 将M和N的关系改为委派关系。
C: 区分是“is-a”还是“has-a”,前者使用继承关系,后者使用委派关系。
D: 以上方案均错。
举一反三
- (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: 以上方案错误
- 对违反里氏替换原则的两个类,可以采用的候选解决方案正确的是( )。 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,应该改成组合或聚合关系
- 关系R有m个元组,关系S有n个元组,则R×S的元组个数是_______。 A: m + n B: m – n C: m× n D: m / n