单选题对于违反里氏替换原则的两个类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,应该改成组合或聚合关系


参考解析

解析: 里氏替换原则是面向对象设计原则之一,由BarbaraLiskov提出,其基本思想是,一个软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别,即把基类都替换成它的子类,程序的行为没有变化。反过来则不一定成立,如果一个软件实体使用的是一个子类对象,那么它不一定适用于基类对象。
在运用里氏替换原则时,尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。由于子类继承基类并实现其中的方法,程序运行时,子类对象可以替换基类对象,如果需要对类的行为进行修改,可以扩展基类,增加新的子类,而无须修改调用该基类对象的代码。

相关考题:

对于违反里氏替换原则的两个类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. 抽象类和接口都不能被实例化D. 一个类可以有多个基类和多个基接口

下列有关继承和派生的叙述中,正确的是( )。A.如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

下面对于抽象类描述不正确的是()。A.抽象类只能作为基类使用B.抽象类不能定义对象C.抽象类可以定义实例对象D.可以实现多态

表示了类间“is-a”的关系,而(32)表示了类之间的“contains-a”关系。A.组合B.引用C.聚合D.继承

接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

以下关于依赖倒置原则的叙述中,正确的是(39)。A.要针对实现编程,而不是针对接口编程B.在程序中尽量使用具体类进行编程,而少使用抽象层类C.在程序代码中传递参数时或在组合关系中,尽量引用层次高的抽象层类D.软件实体应对扩展开放而对修改关闭

面向对象系统中功能复用的最常用技术是()A、类继承B、对象组合C、使用抽象类D、使用实现类

下面对于抽象类描述不正确的是()A、抽象类只能作为基类使用B、抽象类不能定义对象C、抽象类可以定义实例对象D、可以实现多态

下列关于类之间关系的描述,正确的是()A、has-a表示一个类部分地使用另一个类B、uses-a表示类的包含关系C、is-a关系具有对称性D、is-a机制称为“继承”

设计模式中应优先使用的复合技术是()A、抽象类B、接口继承C、类继承D、对象组合

以下关于抽象类和接口的说法错误的是()A、抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。但是一个类却可以实现多个接口B、在抽象类中可以没有抽象方法C、实现抽象类和接口的类必须实现其中的所有方法,除非它也是抽象类。接口中的方法都不能被实现D、接口中定义的变量默认是publicstaticfinal型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值E、接口中的方法都必须加上public关键字

下面对抽象类描述不正确的是()。A、抽象类只能作为基类使用B、抽象类不能定义对象C、抽象类可以实例对象D、可以实现多态

下列关于接口的说法,错误的是()A、 一个类可以有多个基类和多个基接口B、 抽象类和接口都不能被实例化C、 抽象类自身可以定义成员,而接口不可以D、 类不可以多重继承,而接口可以。

下列关于类描述错误的是()。A、类不可以多重继承而接口可以B、抽象类自身可以定义成员而接口不可以C、抽象类和接口都不能被实例化D、一个类可以有多个基类和多个基接口

对于违反里氏替换原则的两个类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、抽象类中可以没有抽象方法,最终类中可以没有最终方法D、抽象类和最终类被继承时,方法可以被子类覆盖

下面说法正确的是()A、继承表示is-a的关系B、继承表示has-a的关系C、要表示has-a的关系必须使用接口D、可以使用实例变量表示has-a的关系

单选题设计模式中应优先使用的复合技术是()A抽象类B接口继承C类继承D对象组合

单选题下列关于类描述错误的是()。A类不可以多重继承而接口可以B抽象类自身可以定义成员而接口不可以C抽象类和接口都不能被实例化D一个类可以有多个基类和多个基接口

单选题以下关于抽象类和接口的说法错误的是()A抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。但是一个类却可以实现多个接口B在抽象类中可以没有抽象方法C实现抽象类和接口的类必须实现其中的所有方法,除非它也是抽象类。接口中的方法都不能被实现D接口中定义的变量默认是publicstaticfinal型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值E接口中的方法都必须加上public关键字

单选题下面对抽象类描述不正确的是()。A抽象类只能作为基类使用B抽象类不能定义对象C抽象类可以实例对象D可以实现多态

单选题下列关于接口的说法,错误的是()A 一个类可以有多个基类和多个基接口B 抽象类和接口都不能被实例化C 抽象类自身可以定义成员,而接口不可以D 类不可以多重继承,而接口可以。

单选题下面对于抽象类描述不正确的是()A抽象类只能作为基类使用B抽象类不能定义对象C抽象类可以定义实例对象D可以实现多态

单选题关于抽象类与最终类,下列说法错误的是()。A抽象类能被继承,最终类只能被实例化B抽象类和最终类都可以被声明使用C抽象类中可以没有抽象方法,最终类中可以没有最终方法D抽象类和最终类被继承时,方法可以被子类覆盖

多选题下面说法正确的是()A继承表示is-a的关系B继承表示has-a的关系C要表示has-a的关系必须使用接口D可以使用实例变量表示has-a的关系

单选题下面有关继承的说法中,正确的是()A  A类和B类均有C类需要的成员,因此可以从A类和B类共同派生出C类B  在派生新类时,可以指明是公有派生、私有派生或保护派生C  派生类可以继承基类中的成员,同时也继承基类的父类中的成员D  在派生类中,不能添加新的成员,只能继承基类的成员