单选题对于违反里氏替换原则的两个类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.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
以下关于依赖倒置原则的叙述中,正确的是(39)。A.要针对实现编程,而不是针对接口编程B.在程序中尽量使用具体类进行编程,而少使用抽象层类C.在程序代码中传递参数时或在组合关系中,尽量引用层次高的抽象层类D.软件实体应对扩展开放而对修改关闭
以下关于抽象类和接口的说法错误的是()A、抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。但是一个类却可以实现多个接口B、在抽象类中可以没有抽象方法C、实现抽象类和接口的类必须实现其中的所有方法,除非它也是抽象类。接口中的方法都不能被实现D、接口中定义的变量默认是publicstaticfinal型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值E、接口中的方法都必须加上public关键字
对于违反里氏替换原则的两个类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抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。但是一个类却可以实现多个接口B在抽象类中可以没有抽象方法C实现抽象类和接口的类必须实现其中的所有方法,除非它也是抽象类。接口中的方法都不能被实现D接口中定义的变量默认是publicstaticfinal型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值E接口中的方法都必须加上public关键字
单选题对于违反里氏替换原则的两个类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 A类和B类均有C类需要的成员,因此可以从A类和B类共同派生出C类B 在派生新类时,可以指明是公有派生、私有派生或保护派生C 派生类可以继承基类中的成员,同时也继承基类的父类中的成员D 在派生类中,不能添加新的成员,只能继承基类的成员