第七章继承多态练习题

合集下载

第7章习题答案

第7章习题答案

第七章派生与继承1.单选题(1).下列关于继承的描述中,错误的是(B)。

A.继承是重用性的重要机制B.C++语言支持单重继承和双重继承C.继承关系不是可逆的D.继承是面向对象程序设计语言的重要特性(2).下列关于基类和派生类的描述中,错误的是(C)。

A.一个基类可以生成多个派生类B.基类中所有成员都是它的派生类的成员C.基类中成员访问权限继承到派生类中不变D.派生类中除了继承的基类成员还有自己的成员(3).下列关于派生类的描述中,错误的是(D)。

A.派生类至少有一个基类B.一个派生类可以作另一个派生类的基类C.派生类的构造函数中应包含直接基类的构造函数D.派生类默认的继承方式是public(4).派生类的对象可以直接访问的基类成员是(A)。

A.公有继承的公有成员B.保护继承的公有成员C.私有继承的公有成员D.公有继承的保护成员(5).下列描述中,错误的是(D)。

A.基类的protected成员在public派生类中仍然是protected成员B.基类的private成员在public派生类中是不可访问的C.基类public成员在private派生类中是private成员D.基类public成员在protected派生类中仍是public成员(6).派生类构造函数的成员初始化列表中,不能包含的初始化项是(B)。

A.基类的构造函数B.基类的子对象C.派生类的子对象D.派生类自身的数据成员(7).下列关于子类型的描述中,错误的是(B)。

A.在公有继承下,派生类是基类的子类型B.如果类A是类B的子类型,则类B也是类A的子类型C.如果类A是类B的子类型,则类A的对象就是类B的对象D.在公有继承下,派生类对象可以初始化基类的对象引用(8).下列关于多继承二义性的描述中,错误的是(D)。

A.一个派生类的多个基类中出现了同名成员时,派生类对同名成员的访问可能出现二义性B.一个派生类有多个基类,而这些基类又有一个共同的基类,派生类访问公共基类成员时,可能出现二义性C.解决二义性的方法是采用类名限定D.基类和派生类中同时出现同名成员时,会产生二义性2.多重继承与单一继承的区别是什么?答:派生类只有一个基类的称为单一继承。

第七章继承多态练习题

第七章继承多态练习题

第七章继承多态一、选择题:1、分析:class A {A() { }}class B extends A { //系统自动生成的构造方法和类的访问权限一样}哪两种说法是正确的? ( )A:类B的构造方法是public的. B:类B的构造方法包含对this()的调用. C:类B的构造方法没有参数. D:类B的构造方法包含对super()的调用.2、运行结果是:()class Base {Base() { System.out.print("Base"); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha();new Base();}}A: Base B: BaseBase C: 编译失败. D: 没有输出. E: 运行时异常. 3. 程序的运行结果是?()A: 编译失败. B: hello from a C: hello from bD: hello from b E: hello from ahello from a hello from b4. 运行结果是:()class TestSuper {TestSuper(int i) { }}class TestSub extends TestSuper{ }class TestAll {public static void main (String [] args) {new TestSub();}}A: 编译失败. B: 程序运行没有异常.C: 第7行抛出异常. D: 第2行抛出异常.5. 程序的运行结果是?()A: 0 B: 1 C: 2 D: 编译失败.6. 对于语句"B is a D" 和"B has a C",一下哪两种说法是正确的? ( ) A:D是B. B:B是D. C:D是C. D:B是C. E:D继承B.F:B 继承D.7. 运行结果是?()A: 1 B: 2 C: 第8行编译失败. D: 第14行编译失败.8. 分析:public class ConstOver {public ConstOver(int x, int y, int z) {}}哪两个是对ConstOver 的构造方法的重载? ( )A:ConstOver() { } B:protected int ConstOver() { }C:private ConstOver(int z, int y, byte x) { }D:public Object ConstOver(int x, int y, int z) { }E:public void ConstOver(byte x, byte y, byte z) { }9. 运行结果是?()A: 4,4 B: 4,5 C: 5,4 D: 5,5 E: 编译失败.10. 分析:public class X {public X aMethod() { return this;}}1) public class Y extends X {2)3) }在第2行可以插入哪两项? ( )A:public void aMethod() { } B:private void aMethod() { }C:public void aMethod(String s) { } D:private Y aMethod() { return null; } E:public X aMethod() { return new Y(); }11. 运行结果是?()A: 4,4 B: 4,5 C: 5,4 D: 5,5 E: 编译失败.12. 以下哪两个重载了方法setVar()? ( )public class MethodOver {public void setVar(int a, int b, float c) {}}A:private void setVar(int a, float c, int b) { } B:public int setVar(int a, float c, int b) {return a;}C:protected void setVar(int a, int b, float c) { } D:public int setVar(int a, int b, float c) {return a;}E:protected float setVar(int a, int b, float c) {return c;}13. 分析:1) class BaseClass {2) private float x = 1.0f;3) protected void setVar(float f) { x = f; }4) }5) class SubClass extends BaseClass {6) private float x = 2.0f;7) // insert code here8) }在第7行插入哪两个覆盖了方法setVar()? ( )A:void setVar(float f) { x = f; } B:public void setVar(int f) { x = f; } C:public void setVar(float f) { x = f; } D:public double setVar(float f){ return f; }E:public final void setVar(float f) { x = f; } F:protected float setVar() { x = 3.0f; return 3.0f; }14. 运行结果是?( )A: 1 B: 2 C: 运行时异常. D: 第8行编译错误. E: 第14行编译错误.15. 分析:class A {protected int method1(int a, int b) { return 0; }}在A的子类中,以下哪两个方法是合法的? ( )A:public int method1(int a, int b) { return 0; } B:private int method1(int a, long b) { return 0; }C:private int method1(int a, int b) { return 0; } D:public short method1(int a, int b) { return 0; }E:static protected int method1(int a, int b) { return 0; }16. 分析:1) public abstract class Test {2) public abstract void methodA();3)4) public abstract void methodB()5) {6) System.out.println("Hello");7) }8) }哪两种改法,可以使程序通过编译? ( )A:给方法methodA()加方法体C:在Test的声明中去掉abstractB:用";"替换第5-7行D:在方法methodA()的声明中去掉abstract E: 在方法methodB()的声明中去掉abstract17. 运行结果是:()1) abstract class AbstractIt {2) abstract float getFloat();3) }4) public class AbstractTest extends AbstractIt {5) private float f1 = 1.0f;6) private float getFloat() { return f1; }7) }A: 编译成功. B: 运行时异常. C: 第2行编译失败. D: 第6行编译失败.18. 在接口中哪两个方法的声明是合法的? ( )A:void method1(); B:public void method2(); C:static public void method5();D:protected void method3(); E:final public void method4();19. 分析:1) public interface Foo {2) int k = 4;3) }哪三项与第2行等价? ( )A:final int k = 4; B:public int k = 4; C:static int k = 4;D:abstract int k = 4; E:volatile int k = 4; F:protected int k = 4;20. 分析:interface Inter { }class A implements Inter { }class B extends A {B() {A[] arr = new A[10];boolean b1 = this instanceof Inter;boolean b2 = arr instanceof Object;System.out.println("b1 = " + b1 + ", b2 = " + b2);}}创建B的对象时会输出?( )A: 编译失败. B: b1 = true, b2 = true C: b1 = true, b2 = falseD: b1 = false, b2 = true E: b1 = false, b2 = false21. 哪一个能通过编译?()A: new Animal().soundOff(); B: Lion l = Alpha1.get("meat eater");C: Elephant e = new Alpha1(); D: new Alpha1().get("veggie").soundOff();22. 分析:class Passenger { }class Engine { }interface TransportVehicle {void loadPassengers();}interface Helicopter extends TransportVehicle {int flyIt( String direction );}abstract class JetStream implements Helicopter { }哪种说法是正确的?()A: TransportVehicle has a Passenger. B: 类Engine在类JetStream中.C: 接口TransportVehicle可以形成多态的基础.D: 继承JetStream的非抽象类可以随意声明方法loadPassengers().23. 哪三个是"is a" 关系? ( )A:public class X { } B:public interface Shape { }public class Y extends X { } public interface Rectangle extends Shape{ }C:public interface Color { } D:public class Species { }public class Shape { private Color color; } public class Animal { private Species species; }E:public class Person { } F:interface Component { }public class Employee { class Container implementsComponent {public Employee(Person person) { } private Component[] children;} }24. 运行结果是:()public interface Test {int frood = 42;}class TestImpl implements Test {private static int frood;public static void main(String[] args) {System.out.println(++frood);}}A: 0 B: 1 C: 42 D: 43 E: 编译失败. F: 运行时异常.25. 运行结果是?()A: 5 B: 10 C: 编译失败. D: 运行时异常.26. 运行结果是:()1) public class Test {2) public static void main(String args[]) {3) class Foo {4) public int i = 3;5) }6) Object o = (Object)new Foo();7) Foo foo = (Foo)o;8) System.out.println("i = " + foo.i);9) }10) }A: i = 3 C: 第6行抛出ClassCastException异常.B: 编译失败. D: 第7行抛出ClassCastException异常.27. 分析:String s = "abcde";Object ob = (Object)s;if (ob.equals(s)) {System.out.println("AAAA");} else {System.out.println("BBBB");}if (s.equals(ob)) {System.out.println("CCCC");} else {System.out.println("DDDD");}输出哪两行? ( )A:AAAA B:BBBB C:CCCC D:DDDD二、简答题1. 简述类与类之间的关系2. 简述继承的基本概念及继承的过程3. 简述方法重写以及方法重载与方法重写的区别4. 简述super关键字的用法5. 简述重写equals方法的步骤6. 简述instanceof关键字的用法7. 简述接口和抽象类的区别8. 简述什么是多态三、编程题1. 设计一个学生类Student,包括的属性有姓名name,年龄age,学位degree。

C、C++程序设计:类、继承、多态单元测试与答案

C、C++程序设计:类、继承、多态单元测试与答案

一、单选题1、关于静态数据成员的描述不正确的是()。

A.静态数据成员是所有对象共有的成员。

B.静态数据成员初始化时一定要在前面加修饰符static。

C.静态数据成员在内存中占有固定内存。

D.静态数据成员在类体外初始化。

正确答案:B2、假设person是一个类,p1是该类的一个对象,p2是指向p1的指针,getname是该类的一个成员函数,则以下不正确的表达是()。

A.person.getname( );B.p1.getname( )C.p2->getname( )D.p1.person::getname( );正确答案:A3、下列静态数据成员的特性中,()是错误的。

A.静态数据成员在类体外进行初始化B.说明静态数据成员时前边要加关键字static来修饰C.静态数据成员初始化时,要在静态数据成员名前加类名和作用域运算符D.静态数据成员不是所有对象所共有的成员正确答案:D4、关于常数据成员的说法不正确的是()。

A.常数据成员通过构造函数的成员初始化列表进行初始化B.常数据成员的定义与一般常量的定义形式相同,但需定义在类体中C.常数据成员可以在定义时直接初始化D.常数据成员必须进行初始化,并且不能被更新正确答案:C5、对于类中定义的成员,其隐含访问权限为()。

A.staticB.privateC.protectedD.public正确答案:B6、下列特性中不是面向对象程序设计语言所特有的是()。

A.模板B.继承C.多态性D.数据封装正确答案:A7、下列对派生类的描述中,错误的是( )。

A.派生类中继承的基类成员的访问权限到派生类保持不变。

B.派生类至少有一个基类。

C.派生类的成员除了其自身的成员外,还包含了其基类的成员。

D.一个派生类可以作为另一个派生类的基类。

正确答案:A8、在公有继承中,派生类成员函数不可以访问( )。

A.基类中的保护成员B.基类中的公有成员C.基类中的私有成员D.派生类中的私有成员正确答案:C9、#include "iostream"using namespace std;class A{char c;public:A(char n){c=n;}~A(){cout<<c;};};class B:public A{char c;public:B(char n):A(n+1){c=n;}~B(){cout<<c;};};int main(){B b('X');b.~B();system("pause");return 0;}A.XYB.XC.YXD.Y正确答案:A10、假设在以下派生类的fun函数中调用了基类的fun函数,则空白处应填写()class AA{public:void fun(){cout<<"aa fun called"<<endl;}};class BB:public AA{public:void fun(){_________________;cout<<"bb fun called"<<endl; }};A.AA.fun();B.fun();C.AA::fun();D.AA->fun();正确答案:C11、关于虚函数的描述中,()是正确的。

C++继承与多态程序阅读题答案

C++继承与多态程序阅读题答案

练习八一、单项选择题(1)答:A 。

C++中若指定公有继承方式,基类中public成员在派生类中仍保持为public 成员,所以在派生类中可直接使用这些继承过来的成员。

这些成员可以通过派生类的对象访问。

(2)答:D。

派生类中继承的基类成员的访问权限到派生类保持不变的前提必须是公有继承,D错误。

(3)答:B。

构造函数、析构函数和友元函数是不能被派生类继承的。

(4)答:D。

在继承链中,构造函数的执行原则是:先执行基类的构造函数,再执行派生类的构造函数。

当一个派生类的对象使用完毕撤消时,析构函数的执行顺序正好与构造函数的执行顺序相反。

即:先执行派生类的析构函数,再执行基类的析构函数。

(5)答案:D。

派生类的对象占用的内存大小是其基类的数据成员占用的内存和派生类中新增成员占用的内存之和(包括基类的不可见成员)。

(6)答案:D。

A、B、C的叙述都正确。

当派生类和基类中出现同名函数不会产生二义性,支配规则会起作用。

(7)答案:B。

建立派生类的对象调用构造函数的初始化过程如下图所示:C++又规定,在一个成员初始化列表中出现对虚基类和非虚基类构造函数的调用,则虚基类的构造函数先于非虚基类的构造函数的执行。

二、填空题(1)答:【1】单继承【2】多继承(2)答:【1】隐式转换【2】强制类型转换(3)答案:【1】c_public【2】c_protected【3】a_public、a_protected、b_protected、b_public、c_private提示:基类中所有成员在派生类中的具体访问权限表如下所示B从A获得的都变为保护成员(a_public、a_protected)。

因此B中的成员有:公有型b_public,保护型a_public、a_protected、b_protected,私有型b_private。

B通过私有继承方式派生出C 时,B的公有型和保护型成员都变为C的私有成员。

三、程序题(1)答:【1】virtual public Furniture【2】virtual public Furniture【3】public Bed,public Sofa。

第七章 继承选择题

第七章 继承选择题

1、下列对基类和派生类关系的描述中,错误的是_________。

A)派生类是基类的具体化B)派生类是基类的子集C)派生类是基类定义的延续D)派生类是基类的组合2、继承具有_________ ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

A)规律性B)传递性C)重复性D)多样性3、下面_________的叙述不符合赋值兼容规则。

A)派生类的对象可以赋值给基类的对象B)基类的对象可以赋值给派生类的对象C)派生类的对象可以初始化基类的引用D)派生类的对象的地址可以赋值给指向基类的指针5、下面叙述错误的是_________。

A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合6、下列说法中错误的是_________。

A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承时基类中的private成员在派生类中仍是private的C)私有继承时基类中的public成员在派生类中是private的D)保护继承时基类中的public成员在派生类中是protected的7、C++的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过_________派生出新的类。

A)复用B)继承C)封装D)引用8、下列关于虚基类的描述中,错误的是_________。

A)虚基类子对象的初始化由最派生类完成B)虚基类子对象的初始化次数与虚基类下面的派生类个数有关C)设置虚基类的目的是消除二义性D)带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数的调用9、派生类的构造函数的成员初始化列表中,不能包含_________。

A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化10、C++类体系中,不能被派生类继承的有_________。

C++习题3(继承和多态)

C++习题3(继承和多态)

习题3一、选择题1.在C++中,类与类之间的继承关系具有( C )A)自反性B)对称性C)传递性D)反对称性2.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( B )A)受限制B)保持不变C)受保护D)不受保护3.按解释中的要求在下列程序划线处填入的正确语句是:( C )#include <iostream.h>class Base{public:void fun(){cout<<"Base::fun"<<endl;}};class Derived:public Base{public:void fun(){ //在此空格处调用基类的函数fun()cout<<"Derived::fun"<<endl;}};A)fun();B)Base.fun();C)Base::fun();D)Base->fun();4.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(C )页脚内容1A)受限制B)保持不变C)受保护D)不受保护5.在哪种派生方式中,派生类可以访问基类中的protected成员(B )A)public和private B)public、protected和privateC)protected和private D)仅protected6.当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)A) public成员B) private成员C) protected成员D) 友元7.不论派生类以何种方法继承基类,都不能使用基类的(B )A) public成员B) private成员C) protected成员D) public成员和protected成员8下面叙述错误的是(S )。

A)基类的protected成员在派生类中仍然是protected的B)基类的protected成员在public派生类中仍然是protected的C)基类的protected成员在private派生类中是private的D)基类的protected成员不能被派生类的对象访问9.下列说法中错误的是(S )。

继承与多态习题

继承与多态习题

继承与多态习题继承与多态习题⼀.基本概念与基础知识⾃测题8.1填空题8.1.1 如果类α继承了类β,则类α称为(1)类,⽽类β称为(2)类。

(3)类的对象可作为(4)类的对象处理,反过来不⾏,因为(5)。

如果强制转换则要注意(6)。

答案:(1)基类(2)派⽣类(3)派⽣类(4)基类(5)派⽣类有⼀些新成员(6)只能派⽣类强制转换为基类8.1.2 当⽤public继承从基类派⽣⼀个类时,基类的public成员成为派⽣类的(1)成员,protected成员成为派⽣类的(2)成员,对private成员是(3)。

公有派⽣可以使其类的(4),所以公有派⽣是主流。

答案:(1)public成员(2)protected成员(3)不可访问(4)接⼝不变8.1.3 利⽤继承能够实现(1)。

这种实现缩短了程序开发的时间,VC++中的(2)很好地体现了这⼀点。

答案:(1)代码的复⽤(2)MFC编程8.1.4 ⼀个派⽣类只有⼀个直接基类的情况称为(1),⽽有多个直接基类的情况称为(2)。

继承体现了类的(3)概念,这在MFC中得到了很好表现,MFC中只采⽤了(4)。

答案:(1)单继承(2)多重继承(3)层次(4)单继承8.1.5 C++中多态性包括两种多态性:(1)和(2)。

前者是通过(3)实现的,⽽后者是通过(4)和(5)来实现的。

答案:(1)编译时的(2)运⾏时的(3)函数和运算符的重载(4)类继承关系(5)虚函数8.1.6 在基类中将⼀个成员函数说明成虚函数后,在其派⽣类中只要(1)、(2)和(3)完全⼀样就认为是虚函数,⽽不必再加关键字(4)。

如有任何不同,则认为是(5)⽽不是虚函数。

除了⾮成员函数不能作为虚函数外,(6)、(7)和(8)也不能作为虚函数。

答案:(1)同虚函数名(2)同参数表(3)同返回类型。

如基类中返回基类指针,⽽派⽣类中返回派⽣类指针是允许的(4)virtual(5)重载(6)静态成员函数(7)内联函数(8)构造函数8.1.7 纯虚函数定义时在函数参数表后加(1),它表明程序员对函数(2),其本质是将指向函数体的指针定为(3)。

c继承与多态程序阅读题

c继承与多态程序阅读题

练习八一、单项选择题(1)派生类对象只能访问基类中的()。

A)公有继承的公有的成员B)公有继承的私有成员C)公有继承的保护成员D)私有继承的公有成员(2)下列对派生类的描述中,()是错误的。

A)一个派生类可以作为另一个派生类的基类B)派生类至少有一个基类C)派生类的成员除了它自己的成员外,还包含了它的基类成员D)派生类中继承的基类成员的访问权限到派生类保持不变(3)C++类体系中,能被派生类继承的是()。

A)构造函数B)虚函数C)析构函数D)友元函数(4)假设有如下定义,那么执行main()函数后下列四个语句输出的顺序是()。

class CBase{public: CBase(){cout<<"Construct Base."<<endl;}public: ~CBase(){cout<<"DeConstruct Base."<<endl;}};class CDerived:public CBase{public: CDerived(){cout<<"Construct Derived."<<endl;}public: ~CDerived(){cout<<"DeConstruct Derived."<<endl;}};void main(){CDerived *obj=new CDerived;delete obj;system("pause");}①Construct Base. ②DeConstruct Base.③Construct Derived. ④DeConstruct Derived.A)①②③④B)①③②④C)③④①②D)①③④②(5)如果存在如下定义,那么main()函数输出的结果是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章继承多态一、选择题:1、分析:class A {A() { }}class B extends A { //系统自动生成的构造方法和类的访问权限一样}哪两种说法是正确的? ( )A:类B的构造方法是public的. B:类B的构造方法包含对this()的调用. C:类B的构造方法没有参数. D:类B的构造方法包含对super()的调用.2、运行结果是:()class Base {Base() { System.out.print("Base"); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha();new Base();}}A: Base B: BaseBase C: 编译失败. D: 没有输出. E: 运行时异常. 3. 程序的运行结果是?()A: 编译失败. B: hello from a C: hello from bD: hello from b E: hello from ahello from a hello from b4. 运行结果是:()class TestSuper {TestSuper(int i) { }}class TestSub extends TestSuper{ }class TestAll {public static void main (String [] args) {new TestSub();}}A: 编译失败. B: 程序运行没有异常.C: 第7行抛出异常. D: 第2行抛出异常.5. 程序的运行结果是?()A: 0 B: 1 C: 2 D: 编译失败.6. 对于语句"B is a D" 和"B has a C",一下哪两种说法是正确的? ( ) A:D是B. B:B是D. C:D是C. D:B是C. E:D继承B.F:B 继承D.7. 运行结果是?()A: 1 B: 2 C: 第8行编译失败. D: 第14行编译失败.8. 分析:public class ConstOver {public ConstOver(int x, int y, int z) {}}哪两个是对ConstOver 的构造方法的重载? ( )A:ConstOver() { } B:protected int ConstOver() { }C:private ConstOver(int z, int y, byte x) { }D:public Object ConstOver(int x, int y, int z) { }E:public void ConstOver(byte x, byte y, byte z) { }9. 运行结果是?()A: 4,4 B: 4,5 C: 5,4 D: 5,5 E: 编译失败.10. 分析:public class X {public X aMethod() { return this;}}1) public class Y extends X {2)3) }在第2行可以插入哪两项? ( )A:public void aMethod() { } B:private void aMethod() { }C:public void aMethod(String s) { } D:private Y aMethod() { return null; } E:public X aMethod() { return new Y(); }11. 运行结果是?()A: 4,4 B: 4,5 C: 5,4 D: 5,5 E: 编译失败.12. 以下哪两个重载了方法setVar()? ( )public class MethodOver {public void setVar(int a, int b, float c) {}}A:private void setVar(int a, float c, int b) { } B:public int setVar(int a, float c, int b) {return a;}C:protected void setVar(int a, int b, float c) { } D:public int setVar(int a, int b, float c) {return a;}E:protected float setVar(int a, int b, float c) {return c;}13. 分析:1) class BaseClass {2) private float x = 1.0f;3) protected void setVar(float f) { x = f; }4) }5) class SubClass extends BaseClass {6) private float x = 2.0f;7) // insert code here8) }在第7行插入哪两个覆盖了方法setVar()? ( )A:void setVar(float f) { x = f; } B:public void setVar(int f) { x = f; } C:public void setVar(float f) { x = f; } D:public double setVar(float f){ return f; }E:public final void setVar(float f) { x = f; } F:protected float setVar() { x = 3.0f; return 3.0f; }14. 运行结果是?( )A: 1 B: 2 C: 运行时异常. D: 第8行编译错误. E: 第14行编译错误.15. 分析:class A {protected int method1(int a, int b) { return 0; }}在A的子类中,以下哪两个方法是合法的? ( )A:public int method1(int a, int b) { return 0; } B:private int method1(int a, long b) { return 0; }C:private int method1(int a, int b) { return 0; } D:public short method1(int a, int b) { return 0; }E:static protected int method1(int a, int b) { return 0; }16. 分析:1) public abstract class Test {2) public abstract void methodA();3)4) public abstract void methodB()5) {6) System.out.println("Hello");7) }8) }哪两种改法,可以使程序通过编译? ( )A:给方法methodA()加方法体C:在Test的声明中去掉abstractB:用";"替换第5-7行D:在方法methodA()的声明中去掉abstract E: 在方法methodB()的声明中去掉abstract17. 运行结果是:()1) abstract class AbstractIt {2) abstract float getFloat();3) }4) public class AbstractTest extends AbstractIt {5) private float f1 = 1.0f;6) private float getFloat() { return f1; }7) }A: 编译成功. B: 运行时异常. C: 第2行编译失败. D: 第6行编译失败.18. 在接口中哪两个方法的声明是合法的? ( )A:void method1(); B:public void method2(); C:static public void method5();D:protected void method3(); E:final public void method4();19. 分析:1) public interface Foo {2) int k = 4;3) }哪三项与第2行等价? ( )A:final int k = 4; B:public int k = 4; C:static int k = 4;D:abstract int k = 4; E:volatile int k = 4; F:protected int k = 4;20. 分析:interface Inter { }class A implements Inter { }class B extends A {B() {A[] arr = new A[10];boolean b1 = this instanceof Inter;boolean b2 = arr instanceof Object;System.out.println("b1 = " + b1 + ", b2 = " + b2);}}创建B的对象时会输出?( )A: 编译失败. B: b1 = true, b2 = true C: b1 = true, b2 = falseD: b1 = false, b2 = true E: b1 = false, b2 = false21. 哪一个能通过编译?()A: new Animal().soundOff(); B: Lion l = Alpha1.get("meat eater");C: Elephant e = new Alpha1(); D: new Alpha1().get("veggie").soundOff();22. 分析:class Passenger { }class Engine { }interface TransportVehicle {void loadPassengers();}interface Helicopter extends TransportVehicle {int flyIt( String direction );}abstract class JetStream implements Helicopter { }哪种说法是正确的?()A: TransportVehicle has a Passenger. B: 类Engine在类JetStream中.C: 接口TransportVehicle可以形成多态的基础.D: 继承JetStream的非抽象类可以随意声明方法loadPassengers().23. 哪三个是"is a" 关系? ( )A:public class X { } B:public interface Shape { }public class Y extends X { } public interface Rectangle extends Shape{ }C:public interface Color { } D:public class Species { }public class Shape { private Color color; } public class Animal { private Species species; }E:public class Person { } F:interface Component { }public class Employee { class Container implementsComponent {public Employee(Person person) { } private Component[] children;} }24. 运行结果是:()public interface Test {int frood = 42;}class TestImpl implements Test {private static int frood;public static void main(String[] args) {System.out.println(++frood);}}A: 0 B: 1 C: 42 D: 43 E: 编译失败. F: 运行时异常.25. 运行结果是?()A: 5 B: 10 C: 编译失败. D: 运行时异常.26. 运行结果是:()1) public class Test {2) public static void main(String args[]) {3) class Foo {4) public int i = 3;5) }6) Object o = (Object)new Foo();7) Foo foo = (Foo)o;8) System.out.println("i = " + foo.i);9) }10) }A: i = 3 C: 第6行抛出ClassCastException异常.B: 编译失败. D: 第7行抛出ClassCastException异常.27. 分析:String s = "abcde";Object ob = (Object)s;if (ob.equals(s)) {System.out.println("AAAA");} else {System.out.println("BBBB");}if (s.equals(ob)) {System.out.println("CCCC");} else {System.out.println("DDDD");}输出哪两行? ( )A:AAAA B:BBBB C:CCCC D:DDDD二、简答题1. 简述类与类之间的关系2. 简述继承的基本概念及继承的过程3. 简述方法重写以及方法重载与方法重写的区别4. 简述super关键字的用法5. 简述重写equals方法的步骤6. 简述instanceof关键字的用法7. 简述接口和抽象类的区别8. 简述什么是多态三、编程题1. 设计一个学生类Student,包括的属性有姓名name,年龄age,学位degree。

相关文档
最新文档