第三章 面向对象(上)复习题目
《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。
A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。
C++有(B)关联。
A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。
A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。
A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。
A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。
面向对象复习材料

一、填空题1.如果一个方法不返回任何值,则该方法的返回值类型为。
2.如果子类中的某个方法名、返回值类型和与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。
3.接口中所有的属性均为_ __、和_ 的。
4. 方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法必须在类之中定义。
5.在Java 程序中,通过类的定义只能实现重继承,但通过的定义可以实现多重继承关系。
6.一般Java程序的类主体由两部分组成:一部分是,另一部分是。
7.分别用关键字来定义类,用关键字来分配实例存储空间。
8.当一个类的修饰符为时,说明该类不能被继承,即不能有子类。
9.在Java中,能实现多重继承效果的方式是。
二、选择题1.方法内定义的变量()。
A.一定在方法内所有位置可见B.可能在方法的局部位置可见C.在方法外可以使用D.在方法外可见2.方法的形参()。
A.可以没有B.至少有一个C.必须定义多个形参D.只能是简单变量3.return 语句()。
A.不能用来返回对象B.只可以返回数值C.方法都必须含有D.一个方法中可以有多个4.main()方法的返回值类型是()。
A.boolean B.int C.void D.static5.编译并运行下面的程序,运行结果是()。
public class A{public static void main(String args[]){A a=new A();a.method(8);}void method(int i){System.out.println(“int: ”+i);}void method(long i){System.out.println(“long: ”+i);}A.程序可以编译运行,输出结果为:“int: 8”B.程序可以编译运行,输出结果为:“long: 8”C.程序有编译错误,因为两个method()方法必须定义为静态(static)的D.程序可以编译运行,但是没有输出6.能作为类及其成员的修饰符是()。
面向对象复习题

第一部分面向对象方法概述一、填空题1.对象的抽象是,类的实例是。
2.动态模型描述了系统的结构。
3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流,有、和三种外部事件控制流。
控制流是一个处理内部的控制,均可结构化。
4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。
5.继承性是自动共享父类属性和的机制。
6.对象具有封装性,实现了的组合。
7.(8.在面向对象方法中,信息隐藏通过对象的来实现。
类结构分离了和,从而支持了信息隐藏。
9.抽象是指强调实体的、,忽略一些无关紧要的属性。
类实现了对象的和的抽象,它是对象的共性的抽象。
10.子类只继承的属性和操作,称为单重继承。
11.对象的抽象是,类的具体化就是,也可以说类的实例是。
12.类具有,它是的行动的抽象。
13.对象具有状态,对象用来描述它的状态。
14.概念模型描述了系统的。
功能模型指出,动态模型确定,而对象模型确定。
功能模型由组成。
15.面向对象有三个基本要素,它们是、、。
16.面向对象技术在三个级别上促进了共享,它们是、、。
17.活动是一种有时间间隔的操作,它是依附于。
动作是一种瞬时操作,它是与联系在一起的操作。
18.[19.封装性是指所有软件部件内部都有明确的以及清楚的。
每个软件部件都有友好的,软件部件的与分离。
20.主要的对象类型有、、和。
21.同一个类中的共享是指同一个类中的对象有着相同的和相同的。
22.结构化方法的本质是,其、可修改性和可重用性都比较差。
23.对象还有,用于改变对象的状态。
对象实现了和的结合。
24.面向对象方法认为系统是由应用域的组成。
25.对象具有状态,描述对象的状态用它的。
26.类具有属性,描述类的属性用。
27.一个方法有、和。
28.动态模型描述了系统的。
29.】30.对象模型的主要元素是类,关联和。
31.通过这种机制和构造来实现不同应用中的信息共享。
32.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。
C++面向对象技术复习题汇总(含答案)

面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理.A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是( )A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’;B、name=”lin”;C、name=new char[5]; D、cout<〈name[3];7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( )A、name[3]=’q';B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;,下面的语句中错误的是:( )A、name[3]=’q’;B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板( )template 〈class T>T max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了( )A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin〉〉x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y){……}(2) int f(int a,float b){…… }(3) int f(int i,int j){……}(4) float k(int x){…… }是重载函数。
(完整)c++面向对象复习题答案版要点

一、填空题1.C++中有两种数据类型:( char )和( int long )可以使用signed修饰符。
在C++中,用数组、指针、和(引用 )作为函数参数,能够将参数值带回.2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。
3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承 )、(多态).4。
拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是(把对象的每个数据成员的值都复制到新建立的对象中)。
5。
用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类的)构造函数,否则应用程序会产生一个编译错误。
6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共享).7。
在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同 )。
8。
在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装)特性。
9.预编译指令由三种,它们是:文件包含、( 宏定义 )和( 条件编译).10。
静态的成员函数没有隐含的( this ),所以,它们只能直接访问类的静态的数据成员。
11.在C++中,函数的参数有两种传递方式,它们是值传递和( 地址 )。
12.当非静态成员函数被调用时,该成员函数的( this)指向调用它的对象。
13。
拷贝构造函数使用( 引用)作为参数初始化创建中的对象。
14。
在公有继承的情况下,基类数据成员在派生类中的访问权限(不变 ).15.在C++中,构造派生类对象时,总是先从(基类 )的初始化开始的。
16。
当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。
17。
在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为( 虚基类)。
18.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为(抽象类),定义该类至少具有一个( 纯虚函数 )。
面向对象程序设计复习题及参考答案

20.Java语言中,通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的块来捕
获和处理异常。
21.多态是指。
22.声明常量时使用修饰符。
23.Java中异常抛出使用保留字。
24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名
来访问和调用。
25.如果类成员前面没有访问权限修饰符,则该类成员具有访问权限。
4.构造器方法有什么特点和作用?
5.保留字throw和throws有什么区别?
6.将下面的while循环改写为for循环
int count=1,sum= 0;
while ( cou nt <= 30 ) {
sum += count;
count +=3;
}
7.Java语言编译和执行的过程是?
8.检查型异常和非检查型异常有何区别?
9.请改造下面的构造方法,使第一个构造方法调用第二个构造方法。
public Class On e(i nt alpha) {
this.alpha = alpha;
this.beta = 0;
}
public Class On e(i nt alpha , int beta) {
this.alpha = alpha;
}
public int getCount(){
return count;
}
}
2.int gradeLevel;
switch (gradeLevel){
case1:System.out.print("Go to the101");
case2:System.out.print("Go to202");
第3章 面向对象(上)

19、在以下什么情况下,构造方法会被调用ቤተ መጻሕፍቲ ባይዱ ( ) A、类定义时 B、创建对象时 C、调用对象方法时 D、使用对象的变量时
20、如果类中定义了构造方法,则系统不会自动 创建默认的构造方法。( )
21、构造方法是类的一个特殊成员,它会在类实 例化对象时被自动调用。( ) 22、与普通方法一样,构造方法也可以重载。 ( ) 23、成员方法中的this代表的是当前调用这个方 法的对象( ) 24、在成员方法中可以使用“this([参数1,参数 2…])”来调用其它的构造方法。( )
15、下列关于构造方法重载的说法中,错误的是 ( )。 A、不同构造方法中调用本类其它的构造方法时, 需要使用this([参数1,参数2…])的形式 B、不同构造方法中调用本类其它的构造方法时, 必须放在第一行 C、构造方法的重载和普通方法一样,方法名的 前面需要声明返回值类型 D、构造方法重载时,只要每个参数类型或参数 个数不同即可 16、下面哪个关键字用于将类中的属性私有化 ( ) A、default B、public C、private D、protected
27、阅读下面的代码 class Demo{ private String name; Demo(String name){ = name;} private static void show(){ System.out.println(name) } public static void main(String[] args){ Demo d = new Demo(“lisa”); d.show(); } } 下列关于程序运行结果的描述中,正确的是(D ) A、输出 lisa B、输出null C、输出name D、编译失败,无法从静态上下文中引用非静态变量 name
第三章面向对象程序设计(答案)

学号:姓名:第三章面向对象程序设计作业一、判断题1、一个Java源程序可有多个类,但只仅有一个public 类,而且程序名与public 类名相同。
对2、如果类 A 和类B 在同一个包中,则除了私有成员外,类 A 可以访问类 B 中所有的成员。
对3、接口中的成员变量全部为常量,方法为抽象方法。
对4、抽象类可以有构造方法,可以直接实例化。
错5、对static 方法的调用可以不需要类实例。
对6、包含抽象方法的类一定是抽象类。
对7、方法中的形参可以和方法所属类的属性同名。
对8、接口无构造器,不能有实例,也不能定义常量。
错9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。
对10、Java应用程序的入口main 方法只有一种定义法。
对二、选择题1、下列答案正确的是( A )A) 在同一个Java 源文件中可以包含多个类,只能有一个被声明为publicB) 在同一个Java 源文件中只能包含一个类,并被声明为publicC) 在同一个Java 源文件中可以包含多个类,都可以被声明为publicD) 在同一个Java 源文件中可以包含多个类,只能有一个被声明为default2、Java实现动态多态性是通过( B )实现的。
A) 重载B) 覆盖C) 接口D) 抽象类3、下列哪一个是正确的方法重载描述( A )A) 重载方法的参数类型必须不同B) 重载方法的参数名称必须不同C) 返回值类型必须不同D) 修饰词必须不同4、final 关键字不可以用来修饰( D )A) 类B) 成员方法C) 域D) 接口5、接口的所有成员方法都具有( B )属性A) private, final B) public, abstractC) static, protected D) static6、Java的封装性是通过( A )实现的A) 访问控制B) 设计内部类C) 静态域和静态方法D) 包7、下列接口或类不属于java.util.* 包的是( D )A) Collection B)Vector C) Map D) Integer8、下述哪一组方法,是一个类中方法重载的正确写法?( A )A) int addValue( int a, int b ){return a+b;}float addValue ( float a, float b) {return a+b;}B) int addValue (int a, int b ){value=a+b; }float addValue ( int a, int b) {return (float)(a+b);}C) int addValue( int a, int b ){return a+1;}int addValue ( int a, int b) {return a+b;}D) int addValue( int a, int b ) {return a+b;}int addValue ( int x, int y ) {return x+y;}9、下列说法哪个是正确的?( C )A) 子类不能定义和父类同名同参数的方法B) 子类只能继承父类的方法,而不能重载C) 重载就是一个类中有多个同名但有不同形参和方法体的方法D) 子类只能覆盖父类的方法,而不能重载10、对于下列代码:public class Parent {public int addValue( int a, int b) {int s;s = a+b;return s;}}class Child extends Parent {}下述哪个方法不可以加入类Child? ( B )A) public int addValue( int a, int b,int c ){// do something...}B) public void addV alue (int a, int b ){// do something...}C) public int addValue( int a ){// do something...}D) public int addValue( int a, int b ) {//do something...}11、以下程序段输出结果的是( B )public class A implements B {public static void main(String args[]) {int i;A c1 = new A();i= c1.k;System.out.println("i="+i);}}interface B {int k = 10;}A) i=0 B) i=10 C) 程序有编译错误D) i=true12、阅读下面的程序,输出结果是( B )public class TestDemo {int m=5;public void some(int x) {m=x;}public static void main(String args []) {new Demo().some(7);}}class Demo extends TestDemo {int m=8;public void some(int x) {super.some(x);System.out.println(m);}}A) 5 B) 8 C) 7 D) 编译错误13、下述哪个说法是不正确的?( A )A) 局部变量在使用之前无需初始化,因为有该变量类型的默认值B) 类成员变量由系统自动进行初始化,也无需初始化C) 参数的作用域就是所在的方法D) for 语句中定义的变量,当for 语句执行完时,该变量就消亡了14、下述那一个保留字不是类及类成员的访问控制符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章面向对象(上)
习题
一、填空题
1.在Java中,对象是通过【类】创建出来的。
2.构造方法的名称必须和【类名称】保持一致。
3.this关键字可以访问一个类的【成员变量】变量,解决与局部变量名称冲突的
问题。
4.一个类中可以定义多个构造方法,只要每个构造方法的【参数类型与参数名
称】不同,即可实现重载。
5.int类型的成员变量初始化值为【0 】。
二、判断题
1.在Java中使用String类型的实例对象表示一个字符串。
(对)
2.在成员方法中出现的this关键字,代表的是调用这个方法的对象。
(对)
3.在成员方法中可以使用“this([参数1,参数2…])”来调用其它的构造方法。
(错)
4.垃圾回收器会随时将垃圾对象从内存中释放。
(错)积累到一定值同意收回,单独
调用
5.静态代码块中可以对静态成员变量进行赋值。
(对)
三、选择题
1.下列关于this的说法中,错误的是(D )
A: 只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用
B: 在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次C: this关键字可以用于区分成员变量与局部变量
D: this可以出现在任何方法中有限制的
2.当一个类中成员变量和局部变量重名时,可以使用哪个关键字进行区分(D )
A: super B: this C: public D: true
3.下面关于静态变量的描述,正确的是(C )
A: 静态变量可以定义在类中的任意位置
B: 静态变量一但被赋值不能被修改
C: 静态变量可以被类直接调用,因此可以说静态变量的生命周期与实例无关
D: 以上都不对
4.下列关于构造方法的描述中,错误的是()
A: 构造方法的方法名必须和类名一致
B: 构造方法不能写返回值类型
C: 构造方法可以重载
D: 构造方法的访问权限必须和类的访问权限一致
5.请阅读下面的代码
String s1=new String(“abc”);
String s2=”abc”;
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
下列选项中,程序的输出结果为()
A: false、true
B: false、false
C: true、true
D: true、false
四、简答题
1.请简要说明静态变量有哪些特点。
2.类名. 可以随着类的加载加载到内存随着类的消失而消失。