对于违反里氏替换原则的两个类A和B,可以采用的候选解决方案是()
A: 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程
B: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题
C: 将B到A的继承关系改成组合关系
D: 区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-a,应该改成组合或聚合关系
A: 尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程
B: 创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题
C: 将B到A的继承关系改成组合关系
D: 区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-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,应该改成组合或聚合关系
- (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: has-a uses-a is-a B: has-a uses-a C: uses-a is-a D: has-a is-a