面向对象复习题1
C++面向对象技术复习题汇总(含答案)

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];< bdsfid="94" p=""></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、假设定义了函数模板()templateT 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){…… }是重载函数。
面向对象期末考试题及答案

面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。
答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。
面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。
通过对象之间的交互来实现程序的功能。
2. 解释什么是多态性,并给出一个简单的例子。
答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
例如,在Java中,可以通过重载和重写来实现多态。
假设有一个动物类Animal,它有一个方法makeSound()。
然后有一个子类Dog,它重写了makeSound()方法。
当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。
3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。
三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。
面向对象程序设计期末复习题及答案1

C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备4.在进行完任何C++流的操作后,都可以用C++ 流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15 题,每小题2 分,共30 分) [主要从作业题目中抽出来]答案:eof 5.函数重载是指____________ 。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同3 题,每小题5 分,共15 分)程序编制题【也称综合分析题】每题8 分,第3题9分,共25 分)容打*号是重点,打▲号是编程题出题范围*基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲ C++ 类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数*基类与派生类的定义。
*基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
* ▲函数模板。
* ▲使用类来定义对象并在程序中的应用样题填空题1. 假定AB 为一个类,则执行“ a[10]; ”语句时,系统自动调用该类的构造函数的次数为。
答案:102. 可以用p.a 的形式访问派生类对象P 的基类成员a, 其中a 是__________________ 。
答案:公有继承的公有成员阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<< “x=y” <<endl;elsecout<< “ x!=y ”<<endl;}void disp(){cout<< “x=” <<x<<“,y ” =<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0 x=2,y=3 x!=y x=y2.分析以下程序的执行结果#include<iostream.h> int add(int x,int y){return x+y;2. 填空题。
面向对象程序设计复习题一

面向对象程序设计复习题一一.名词解释1、构造函数自定义数据类型,由数据成员、方法成员构成,具有封装作用2、对象按照数据类型分配的内存空间,可以实现方法的调用3、运算符重载本质是全局对象,但是纳入到了类的管理4、析构函数负责完成对象的创建和初始化5、组合两个类之间的一种关系,其中一个类拥有另一个类的全部操作和数据二.简答。
1、什么是面向过程设计思想?构造函数;拷贝构造函数;赋值运算符2、比较Java和C++?C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public3、重载的意义?重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。
4、类和结构体的主要区别是什么?当成员默认属性时,类默认为private,而结构体默认为public5、比较继承与组合。
继承与组合解决的都是复用问题,继承解决的是类似生物遗传的复用,组合描述的是装配关系,当二者皆可用的时候要符合组合优先的原则三.辩析(可以不说出对错但是要给出评价)1、派生类方法可以访问父类的全部成员。
符合里氏替换原则2、静态数据成员是属于类的。
public修饰符号允许外界方法访问本作用域内的成员,因此破坏了封装性3、private继承方式不能产生子类。
private方式派生的类不能完成父类的全部功能,所以不能产生子类。
4、不能实例化的类一定是抽象类。
类的构造函数设为非public属性即不能实例化5、面向对象思想适合解决复杂的问题。
静态数据成员不属于对象,因此在main函数之前构造四.综合回答1. 请介绍运算符重载的意义。
答:函数重载实现了用同名函数处理同类操作的问题,降低了程序员的负担;运算符重载的本质是函数重载;运算符是程序员更熟练内容,也是为了降低程序员的负担;2. 谈谈多态的意义。
答:多态实现了用同一个指针管理继承类树并保证函数调用功能丰富性的特点;3. 面向对象程序设计思想的优点和缺点。
答:可以实现软件复用;可管理性、可重用性、可扩展性;开发周期短;强壮性好。
c++面向对象复习题答案版

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

《⾯向对象程序设计》编程题复习及其答案《⾯向对象程序设计》复习题1、(C++的输⼊输出)天猫优惠券,我就要券/doc/a2caece903020740be1e650e52ea551811a6c980.html定义⼀个函数max,实现输⼊两个数a、b,⽐较并从⼩到⼤输出。
2、(函数的重载)(1)定义⼀个带两个参数的函数max,输出最⼤值。
(2)再定义⼀个带三个参数的函数max,输出最⼤值。
(3)主函数测试之。
3、(有默认参数的函数)将题2⽤带默认参数的函数实现。
4、(变量的引⽤)(1)定义⼀个swap1函数,以普通形参传⼊两个变量a、b,互换a、b的值。
(2)定义⼀个swap2函数,以指针形参传⼊两个变量a、b,互换a、b的值。
(3)定义⼀个swap3函数,以引⽤形参输⼊两个变量a、b,互换a、b的值。
(4)主函数定义两个变量x、y传⼊三个函数,观察x、y值前后的变化。
5、(类的定义)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1) set函数,键盘输⼊学号,姓名,年龄,性别(2) display函数,输出学⽣信息。
6、(构造函数和析构函数)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1)构造函数,初始化学号,姓名,年龄,性别(2)display函数,输出学⽣信息。
(3)析构函数,输出学⽣学号。
(4)主函数定义多个对象,并注意构造函数和析构函数的调⽤顺序。
7、(构造函数的重载)在题6基础上增加⼀个默认构造函数,实现构造函数的重载8、将题6⽤带默认参数的构造函数实现。
9、(对象数组和对象的动态建⽴及释放)在题8基础上,实现如下主函数:(1)在主函数中定义⼀个包含三个学⽣的数组,并初始化之。
(2)在主函数中定义⼀个student类指针p并⽤new运算符分配动态内存(3)⽤delete删除p指向的动态内存。
java面向对象试题及答案

java面向对象试题及答案1. 试题一题目:什么是面向对象编程?请简要描述面向对象编程的优势和特点。
答案:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,将程序中的数据和操作数据的方法进行了封装,使得程序更加模块化和易于理解。
面向对象编程的主要特点包括封装、继承和多态。
封装使得数据和对数据的操作集中在一个对象中,可以隐藏内部实现细节,提供公共的接口进行访问,增加了程序的安全性和灵活性。
继承允许新建的类继承已有类的属性和方法,通过扩展和重写已有类的功能,减少了代码的重复性,提高了代码的复用和可维护性。
多态允许不同的对象对相同的消息作出不同的响应,通过接口和抽象类的使用,实现了更加灵活和可扩展的程序设计。
面向对象编程的优势包括了代码的重用性、可维护性、可扩展性和灵活性。
通过封装和继承的应用,可以减少代码重复,提高开发效率,并且通过多态的应用,可以实现程序的灵活性,方便后续的扩展和修改。
2. 试题二题目:什么是类?请简要描述类的特点和组成部分。
答案:类是面向对象编程中的核心概念,是对一类具有相同属性和行为的对象进行抽象和封装的模板。
类是用来创建对象的蓝图,可以通过实例化类来创建对象。
类的特点包括了封装、继承和多态。
类通过封装将属性和方法进行了封装,提供了公共的接口与外部进行交互,隐藏了内部实现细节。
继承允许新建的类继承已有类的属性和方法,在原有基础上进行修改和扩展。
多态允许不同的对象对相同的消息作出不同的响应,实现了程序的灵活性和可扩展性。
类的组成部分包括了属性(Field)和方法(Method)。
属性(也称为成员变量)用于描述对象的状态,可以是基本类型或其他类的对象。
方法用于描述对象的行为,可以是处理属性的操作,也可以是其他业务逻辑的实现。
3. 试题三题目:请简要解释传值和传引用的区别,并用代码示例说明。
答案:传值和传引用是在方法调用时,参数传递的两种方式。
《面向对象程序设计》期末复习题及答案1

面向对象程序设计》期末复习指导-单选题1. C++源程序文件的缺省扩展名为( )。
A. cppB. exeC. objD. lik2. 编写C++程序一般需经过的几个步骤依次是( )。
A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接3. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符4. 存储以下数据,占用存储字节最多的是()。
A. 0B. …0‟C. “0”D. 0.01 5. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 的表达式是( )。
A. 1.0/a*b*cB. 1/(a*b*c)C. 1/a/b/(float)cD. 1.0/a/b/c6. x>0 || y==5的相反表达式为()。
A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==57. 字符串”a+b=12\n”的长度为()。
A. 6B. 7C. 8D. 98. 循环语句“for(int i=0; i<n; i++) cout<<i*i<<’’;”中循环体执行的次数为( )。
A. 1B. n-1C. nD. n+19. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 710. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 711. 循环体至少被执行一次的语句为()。
A. for循环B. while循环C. do循环D. 任一种循环12. 在下面的一维数组定义中,哪一个有语法错误。
面向对象程序设计复习总结题(含部分答案)

《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。
3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。
5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。
6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。
1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。
A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。
A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。
A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。
A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。
A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。
A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。
A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。
A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。
面向对象原理与Java实践复习题集(1)

面向对象原理与Java实践复习题集(1)一、单项选择题(请将所选择的答案号码填写在每小题中的圆括号内)1、final关键字不可以用来修饰(D)。
A.类B.成员方法C.成员变量D.接口一、final关键字可以用来修饰类、方法、变量。
各有不同。
A、修饰类(class)。
1、该类不能被继承。
2、类中的方法不会被覆盖,因此默认都是final的。
3、用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类B、修饰方法(method)1、该方法可以被继承,但是不能被覆盖。
2、用途:一个类不允许子类覆盖该方法,则用final来修饰3、好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用fianal方法转入内嵌机制,提高了执行效率。
4、注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的(可以查看编译后的class文件)C、修饰变量(variable)1、用final修饰后变为常量。
包括静态变量、实例变量和局部变量这三种。
2、特点:可以先声明,不给初值,这种叫做final空白。
但是使用前必须被初始化。
一旦被赋值,将不能再被改变。
D、修饰参数(arguments)1、用final修饰参数时,可以读取该参数,但是不能对其作出修改二、final关键字不能用来抽象类和接口。
2、下面关于变量的说法,不正确的是(B)。
A.实例变量是类的成员变量B.实例变量用关键字static声明C.在方法中定义的局部变量在该方法被执行时创建D.局部变量在使用前必须被初始化3、Java实现动态多态性是通过(B)实现的。
A.重载B.覆盖C.接口D.抽象类(动物,懂?)静态多态性指的是程序在编译时,系统就能决定调用哪个函数,如重载。
动态多态性指在运行中才能动态确定操作指针所指的对象,主要通过虚函数和重写来实现。
java 的多态机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法概念理解起来有点抽象。
(完整版)面向对象专题练习

5.在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。
6.一般Java程序的类主体由两部分组成:一部分是属性,另一部分是方法。
7.分别用class关键字来定义类,用new关键字来分配实例存储空间。
public abstract void k();
}
class B extends A{
protected void f(){ }//子类修饰符必须大于父类
void k(){//子类修饰符必须大于父类
System.out.print("I am subclass");
}
public static void main(String[] args) {
A.抽象类中必须有抽象方法,接口中也必须有抽象方法
B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法
C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法
D.抽象类中的变量定义时必须初始化,而接口中不是
29、从下列程序中你发现了几处错误D。
abstract class A{
abstract void f(){};//抽象方法没有方法体。
public void f(){//修饰符必须大于接口的范围,对了
System.out.print(s);
}
}
class ClassB{
void g(InterfaceA a){//g方法传入的a为interfaceA类(接口类型引用)
a.f();
}
}
public class E {
public static void main(String[] args) {
面向对象程序设计复习题及参考答案

网络數谋程考试复习题及参考答案面向对象程序设计一、填空题:1.创建类的对象时,使用运算符 ___________ 给对象分配内存空间。
2.Java通过 ______________________________________________ 来区分重载函数。
3.在子类中使用保留字 _____________ 可调用被子类覆盖的父类中的方法。
4•使用保留字_____________ 可以从一个构造方法中调用同一个类的另一个构造方法。
5.抽象类用修饰符 ________________ 定义。
6.类的数摒成员的访问权限修饰符一般为 ____________________7.访问权限修饰符按照访问权限的大小从大到小分别为______________________ . _&定义类的构造方法不能有_________________ ,其需称与 _______________ 名相同。
9.______________________________________________________________________ 抽象方法是的特征是「10.Java中的所有异常都是从_____________________ 继承来的。
11.对象引用中存储的内容是_________________________________ -12 •下列程序段执行后,String strl = new String Java");String str2 = new String(^Java^);if (strl・ equals(str2)) {System・ out. println(z/They are equal");} else {System ・ out. print In ("They are not equal?/);}输出结果为:____________________________________________13.下而循环执行后的sun值为int count =0, sum = 0;whi.le ( count <10 ) {sum += count;count ++;}14.Java语言中关键字______________________ ^表示双精度类型。
复习题1

2014级计算机-《面向对象的程序设计(C++)》-复习题一、选择题1.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是(D )A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念2.下列程序的输出结果是( B )#include<iostream>using namespace std;int min(int a,int B){ if(a<B) return a;else return B;return 0; }void main(){ cout<<min(1,min(2,3))<<endl; }A. 0B. 1C. 2D. 33.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D )A. 公有类型B. 私有类型C. 保护类型D. 友元类型4.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是(C)A. 友元函数B. 虚函数C. 构造函数D. 析构函数5.下面对静态数据成员的描述中,正确的是( D)A. 静态数据成员可以在类体内进行初始化B. 静态数据成员不可以被类的对象调用C. 静态数据成员不能受private控制符的作用D. 静态数据成员可以直接用类名调用静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。
6.下面对于友元函数描述正确的是( A )A. 友元函数的实现必须在类的内部定义B. 友元函数是类的成员函数。
友缘函数不是类的成员函数,不论放在什么位置C. 友元函数破坏了类的封装性和隐藏性。
错都不影响他的作用D. 友元函数不能访问类的私有成员。
可以访问私有成员7.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( C )A. 派生类的对象可以赋给基类的对象B. 派生类的对象可以初始化基类的引用C. 派生类的对象可以直接访问基类中的成员D. 派生类的对象的地址可以赋给指向基类的指针8.下列关于虚基类的描述,错误的是( B) P266A. 设置虚基类的目的是为了消除二义性B. 虚基类的构造函数在非虚基类之后调用。
面向对象程序设计考试复习题

1.面向对象:一种运用对象、类、继承、封装、包含、消息传递、多态性等概念来构造系统的软件开发方法对象:代表正在创建的系统中的一个实体类:具有相同属性和行为特征的若干对象的集合继承:提供了创建新类的一种方法,它的本质特征是行为共享封装:提供一种对数据访问的控制机制,使得一些数据被隐藏在封装体内,因此具有隐藏性包含:复杂类由若干简单类的对象组成成为类的包含关系消息传递:是向对象发出的服务请求多态性:指向不同对象发送同一消息,根据对象的类的不同完成不同的行为2.指针:用来存放某个变量的地址值的一种变量指针的值和类型与一般变量的不同:指针的这种变量所存放的值是某个变量在内存中地址值,指针的类型不是它存放的某个变量的地址值的类型,而是该指针所指向的变量的类型3.引用:某个对象或变量的别名,它不占内存空间它与指针的区别:a指针是变量,引用时变量的别名b指针通过地址间接访问某个变量,引用通过别名直接访问c 引用必须初始化,一旦被初始化后不得再作为其他变量的别名4.实现两个字符串的交换#include<iostream.h>Void mian(){void swap(char *&,char *&);Char *s1=”hello”;Char *s2=”good”;Swap(s1,s2);Cout<<s1<<”\n”<<s2<<endl;}5.类:一种复杂的数据类型,是将不同类型的数据和与这些数据相关的操作封装在一起的集合体定义格式://说明部分Class<类名>{public:<成员函数和数据成员的说明或实现>Private:<数据成员和成员函数的说明或实现>};//实现部分<各个成员函数的实现>类的访问权限:公有的,私有的,保护的6.对象:类的实例,任何一个对象都是属于某个已知类的定义格式:<类名><对象名表>;对象的成员表示:<对象名>.<数据成员名><对象名>.<成员函数名>(<参数表>)指向对象的指针的成员表示:<对象指针名>-><数据成员名><对象指针名>-><成员函数名>(<参数表>)7.构造函数的功能:在创建对象时使用特定的值来讲对象初始化特点:构造函数是成员函数,函数体可写在类体内也可写在类体外,它的名字与类名相同,它不指定返回类型,有隐含的返回值,该值由系统内部使用8.析构函数的功能:用来释放对象,在对象删除前做一些清理工作特点:是成员函数,函数体可写在类体内也可写在类体外,它的名字在类名前加~字符,不指定返回类型9.默认构造函数的特点:a是无参数的构造函数b函数名与该类的类名相同c 可以由用户定义,当类中没有定义任何构造函数时系统将自动生成一个函数体为空的默认构造函数d在程序中定义一个没有给定初始值的对象时,系统自动调用默认构造函数创建该对象默认析构函数的特点:a如果一个类中没有定义析构函数,系统将自动生成一个默认析构函数,格式如<类名>::~<默认析构函数>(){}b它与用户定义的析构函数具有相同特点,其区别仅在于默认析构函数是系统自动生成的并且是一个空函数10.静态成员和静态对象的不同:静态成员描述类的某个成员的特征,是与类相关的,静态对象描述某个类的对象的作用域静态数据成员的定义:在类体内,在该成员名的类型说明符前加关键字static静态数据成员的引用:格式<类名>::<静态数据成员名>静态成员函数的特点:在其实现中可以直接引用静态成员,但不能直接引用非静态成员。
java面向对象试题及答案

java面向对象试题及答案一、单选题(每题2分,共10分)1. 在Java中,下列哪个关键字用于定义一个类?A. classB. interfaceC. structD. enum答案:A2. Java中,哪个关键字用于定义一个私有方法?A. privateB. publicC. protectedD. default答案:A3. 下列哪个选项不是Java中的访问修饰符?A. privateB. publicC. protectedD. static答案:D4. 在Java中,哪个关键字用于实现多态?A. abstractB. finalC. staticD. interface答案:A5. 在Java中,下列哪个关键字用于定义一个接口?A. classB. interfaceC. structD. enum答案:B二、多选题(每题3分,共15分)1. 在Java中,下列哪些关键字用于定义一个类的方法?A. publicB. privateC. protectedD. static答案:A, B, C, D2. 下列哪些关键字用于实现类的继承?A. extendsB. implementsC. abstractD. final答案:A3. 在Java中,下列哪些关键字用于定义类的成员变量?A. privateB. publicC. protectedD. static答案:A, B, C, D4. 下列哪些关键字用于定义类的构造方法?A. constructorB. thisC. newD. super答案:B, D5. 在Java中,下列哪些关键字用于定义接口的常量?A. privateB. publicC. staticD. final答案:B, C, D三、判断题(每题2分,共10分)1. Java中,一个类可以继承多个类。
(错误)2. Java中,接口可以继承接口。
(正确)3. Java中,一个类可以继承多个接口。
面向对象程序设计复习资料

面向对象程序设计期末总复习题一、单项选择题1.下面关于对象概念的描述中,_______是错误的。
〔B〕A.对象代表着正在创立的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体2. 继承机制的作用是:(C)A.信息隐藏B.数据封装C.定义新类D.数据抽象(D)A.析构函数有且只有一个B.析构函数无任何函数类型D.析构函数不能是虚函数(A)A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性5.通常拷贝构造函数的参数是__________。
(C)A.某个对象名B.某个对象的成员名C.某个对象的引用名6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是________。
(C)A.virtual show()=0;B.virtual void show();C.virtual void show()=0;D.void show=0 virtual;7.下面关于友元的描述中,错误的选项是_________。
(D)8.在C++中,_________运算符不能重载。
(B)A. +B.?:C.-D.<=9.以下关于运算符重载的描述中,________是正确的。
(D)A.运算符重载可以改变操作数的个数C.运算符重载可以改变结合性10. 在以下函数原型中,可以作为类AA构造函数的是_________(D)A.void AA(int) ; B.int AA( ) ; C.AA(int)const; D.AA(int);11.在声明类时,下面的说法正确的选项是_________。
(C)A.可以在类的声明中给数据成员赋初值C.private,public,protected可以按任意顺序出现D.没有用private,public,protected定义的数据成员是公有成员12.继承具有________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
(B)A.规律性B.传递性C.重复性13.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规那么___________。
面向对象程序设计(C++)复习题(1)

一.选择题1.对类的构造函数和析构函数描述正确的是().A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载2.继承具有( ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B。
传递性 C.重复性 D.多样性3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。
A.OneClass(OneClass p);B。
OneClass& (OneClass p );C. OneClass(OneClass &p);D。
OneClass (OneClass *p);4.对于结构中定义的成员,其默认的访问权限为()。
A。
public B. protected C。
private D。
static5.下面对静态数据成员的描述中,不正确的是( )。
A.静态数据成员可以在类体内进行初始化B。
静态数据成员不可以在类体内进行初始化C.静态数据成员能受private控制符的作用D.静态数据成员调用前必须初始6。
C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。
A.复用B。
继承C。
封装 D.引用7。
假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为().A. x(a) B。
x[a] C。
x-〉a D。
x.a9. 对于一个类的构造函数,其函数名与类名( )。
A。
完全相同 B。
基本相同 C。
不相同 D. 无关系10。
一个类的构造函数通常被定义为该类的( )成员。
A. 公有 B。
保护 C。
私有 D。
友元11. 一个类的析构函数通常被定义为该类的( )成员。
A. 私有B. 保护C。
公有 D. 友元12。
一个类的静态数据成员所表示属性()。
A。
是类的或对象的属性 B。
《面向对象程序设计》期末复习带答案

一、单项选择题1.退出Visual Basic的快捷键是()。
CA.Ctrl + Q B.Shift + Q C.Alt + Q D.Ctrl + Alt + Q2.以下四个VB的变量名中,不合法的是()。
CA.Print_Num1 B.Abc% C.Const D.X1_y2_z33设置ADO数据控件RecordSource属性为数据库中的单个表名,则CommandType属性需要设置为()。
B A.adCmdText B.adCmdTable C.adCmdStoredProc D.adCmdUnknown4设有如下过程:Sub ff( x,y,z )x = y + zEnd Sub以下所有参数的虚实结合都是传址方式的调用语句是()。
BA.Call ff ( 5,7,z )B. Call ff ( x,y,z )C. Call ff ( 3 + x,5 + y,z )D. Call ff ( x + y,x - y,z )5.菜单的热键指使用Alt键和菜单标题中的一个字符来打开菜单,建立热键的方法是在菜单标题的某个字符前加上一个()字符。
CA.% B.$ C.& D.#6.函数Int( 76 * RND() )的值是在()范围内的整数。
CA. [1,75]B. [1,76]C. [0,75]D. [0,76]7.以下能够触发文本框Change事件的操作是()。
DA. 文本框失去焦点B.文本框获得焦点C. 设置文本框的焦点D.改变文本框的内容8.设组合框Combo1 中有3个项目,则以下能删除最后一项的语句是()。
BA.Combo1.RemoveItem Text B.Combo1.RemoveItem 2C.Combo1.RemoveItem 3 D.Combo1.RemoveItemCombo1.Listcount9.要使菜单项Menu1在程序运行时失效,使用的语句是()。
DA.Menu1.Visible=True B.Menu1.Visible =False C.Menu1.Enabled=True D.Menu1.Enabled=False10.以下叙述中错误的是()。
面向对象技术 复习题.jsp

复习题2一.填空题1.声明一个数组仅为数组指定了数组名和数据类型,并未指定数组元素的个数,指定个数在初始化时用命令进行。
2.在形式参数表中,数组名后的括号不能省略,括号个数和数组的维数相等,不需要给出数组元素个数;实际参数表中,数组名后不需括号;数组名做实际参数时,传递的是,而数组元素做参数时传递的是。
3.两个字符串的比较实际上是字符串中对应字符的比较。
4.在面向对象的程序设计中,将类的特征和行为分别命名为属性和。
5.构造方法是类的一种方法,它的主要作用是对象的成员变量。
6.Java为对象变量提供了4种访问权限,它们分别是、、、、和________。
7.Java程序中的基本的结构单位。
8.移位运算符包括:>>、<<和。
9.接口定义的关键字为,实现接口的关键字。
10.所谓方法重载,就是在类中创建了多个方法,他们具有,但有,和。
11.设x = 2 ,则表达式( x + + ) * 3 的值是。
12.若x = 5,y = 10,则x > y和x <= y的逻辑值分别为和。
13.在面向对象方法中,____________描述的是具有相似属性与操作的一组对象。
14. java程序须先经过编译,再经过________过程才能执行。
15. java对标识符定义规定,可由字母、数字、下划线和美元符号组成,但必须以字母、下划线或美元符号开头,标识符长度不限,但要_______大小写。
16.声明一个数组仅为数组指定了数组名和数据类型,并未指定数组元素的个数,指定个数在初始化时用__________命令进行。
17.数组下标的最小值为_______,如果想知道其元素个数,可通过属性length获得。
18.在java语言中,对象是通过类的实例化来创建的,需要使用java的__________操作符实现。
19.构造方法是类的一种方法,它的主要作用是_______对象的成员变量。
20.形式参数指的是方法被时的参数行,实际参数是方法被 ________时所传递进去的变量或值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择(共20分,每小题2分)1、面向对象的软件开发过程的正确顺序是:()。
A.设计、分析、编程、维护、测试 B.分析、设计、编程、测试、维护C.分析、设计、测试、编程、维护 D.设计、分析、测试、维护、编程2、以下选项中不属于面向对象三大特征的是:()。
A.继承 B.多态 C.重载 D.封装3、()是C++的合法标识符。
A._Student B.namespace C.ip@address D.2016C++4、int a=20; int b=a++; int c=++b;上述语句全部执行后a、b、c的值分别是()。
A.20、21、22 B.21、21、21 C.21、20、22 D.20、20、215、关于类的友元,下列说法错误的是()。
A.友元关系不可传递B.友元关系是单向的C.如果类A是类B的友元,那么B的全部成员函数都是A的友元函数D.类外部访问本类成员不一定要通过定义友元函数的方式6、类的静态成员具有下列()所述的性质。
A.静态数据成员不属于任何一个对象B.静态成员函数只能通过类名访问C.静态成员函数只能访问静态数据成员D.静态数据成员在类中初始化7、把乘法运算符*重载为某个类的成员函数与非成员函数时,分别需要()个形参。
A.1,2 B.0,1 C.2,1 D.1,08、所谓抽象类是()的类。
A.用virtual关键字继承 B.带有虚函数C.带有纯虚函数 D.在程序代码中用关键字abstract说明9、下面哪一个不是预定义的ostream类对象?()A.cout B.cerr C.clog D.cin10、有如下程序段try{…throw “exception”;…}catch(int){…} //①catch(char){…} //②catch(…){…} //③catch(char[]){…} //④则try块中抛出的异常将会被()捕获并处理。
A.① B.② C.③ D.④二、填空(共15分,每空1分)1、面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。
对象由一组和一组组成。
2、引用是一种特殊类型的变量,可以被认为是另一个变量的。
3、面向对象方法中的,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
4、C++程序中对象的初始化和清理工作,分别由对象所属类的两个特殊的成员函数来完成,它们就是和。
5、C++中标识符的作用域分为函数原型作用域、、局部作用域(块作用域)和。
6、在类的继承关系中,父类又称为,子类又称为。
7、在C++中,当类的继承方式为公有继承时,基类的公有成员和成员的访问属性在派生类中不变,而基类的成员不可直接访问。
8、类型兼容规则是指在需要基类对象的任何地方,都可以使用类的对象来替代。
9、多态从实现的角度来讲可以划分为两类:的多态和的多态。
三、程序阅读(共25分)1、在答题区给出下面程序的运行结果(4分)--函数调用(传值、传地址、引用)#include<iostream.h>void swap(int x,int &y){int temp;temp=x;x=y;y=temp;}void main(){int a=40,b=10;cout<<"a="<<a<<" b="<<b<<"\n";swap(a,b);cout<<"a="<<a<<" b="<<b<<"\n";}#include<iostream.h>void swap(int x,int *y){int temp;temp=x;x=*y;*y=temp;}void main(){int a=40,b=10;cout<<"a="<<a<<" b="<<b<<"\n";swap(a,&b);cout<<"a="<<a<<" b="<<b<<"\n";}2、在答题区给出下面程序的运行结果(5分)#include "iostream.h"class test{private:int num;float fl;public:test();int getint(){return num;}int getfloat(){return fl;}~test();};test::test(){cout<<"lnitalizing default"<<endl;num=0;fl=0.0;}test::~test(){cout<<"Desdtructor is active"<<endl;}int main( ){test array[2];cout<<array[1].getint()<<" "<<array[1].getfloat()<<endl; }3、在答题区给出下面程序的运行结果(4分)#include<iostream.h>class A{ int a1,a2;public:A(int i,int j) {a1=i;a2=j;}void print() {cout<<a1<<","<<a2<<endl;}};class B:public A{A a;int b;public:B(int i,int j,int k,int m,int n):A(i,j),a(k,m) { b=n;} void print();};void B::print(){A::print();a.print();cout<<"b="<<b<<endl;}void main(){B b(4,5,6,7,8);b.print();}4、在答题区给出下面程序的运行结果(6分)#include<iostream.h>class Pet{static int m_No;public:Pet() {cout<<"NO"<<++m_No<<"Pet() is called"<<endl;} };class GrandParent{public:GrandParent() { cout<<"GrandParent() is called"<<endl;} };class Mother:virtual public GrandParent{public:Mother(){cout<<"Mother() is called"<<endl;}};class Father:virtual public GrandParent{public:Father(){cout<<"Father() is called"<<endl;}};class Baby:public Mother,public Father{Pet mPet1,mPet2;public:Baby() {cout<<"Baby() is called"<<endl;}};int Pet::m_No=0;void main(void){ Baby zBaby;}5、在答题区给出下面程序的运行结果(6分)#include<iostream.h>class fruit{int Qlevel;public:fruit() {Qlevel=3; cout<<"请尝水果"<<endl; }virtual void taste1(){cout<<"这水果味道好极了"<<endl;} void taste2(){cout<<"我是美国"<<Qlevel<<"号苹果"<<endl;}int & QualityLevel (int & zQL ) {zQL=Qlevel; return Qlevel;}};class Orange: public fruit{public:Orange() {cout<<"请尝橙子"<<endl;}void taste1() {cout<<"这橙子味道美极了"<<endl;}void taste2() { cout<<"我是美国特大号橙子"<<endl;}};void main(){Orange zOrange;fruit *ptr=&zOrange;int zQL=8;ptr->taste1();ptr->QualityLevel(zQL)=1;cout<<"我是中国第"<<zQL<<"号大橙子"<<endl;zOrange.taste1();ptr->taste2();}四、程序填空(共10分,每空2分)1、请将以下程序中不完整的地方补全,使程序执行后输出:Width:10 Height:20(本小题4分,每空2分)--封装、继承、包含多态#include <iostream>using namespace std;class Rectangle{public:(1) {Rectangle(int w,int h)width=w;height=h;}friend ostream &operator<<(ostream & out,const Rectangle &rec);private:int width,height;};ostream & operator<<(ostream & out,const Rectangle & rec){out<<"Width:"<<rec.width<<" "<<"Height:"<<rec.height<<endl;return out;}int main(){Rectangle rec(10,20);(2) cout<<rec;return 0;}2、请将以下程序中不完整的地方补全,使得执行后的输出和代码后提示的输出一致。