Java面向对象编程考试题库及答案

版权申诉
5星 · 超过95%的资源 5 下载量 148 浏览量 更新于2024-07-18 收藏 37KB DOCX 举报
"这是一份Java面向对象编程的测试题,包含了类与对象的关系、类的定义、方法的使用、构造方法、关键字的理解等多个面向对象编程的基础知识点。" 1. 类和对象之间的关系是(实例化关系)[单选题] - 类是对象的模板,对象是类的实例,通过类可以创建多个具有相同结构和行为的对象。 2. 类是具有相同(属性和方法)的集合,是对对象的抽象描述[单选题] - 类用来封装数据(属性)和操作数据的行为(方法),它是面向对象编程的核心概念。 3. 下列哪个类声明是正确的(类名首字母大写,如:public class MyClass {})[单选题] - Java中,类名通常遵循驼峰命名法,首字母大写。 4. 定义类头时,不可能用到的关键字是(goto)[单选题] - Java中,`goto`是保留字但未被使用,不能作为关键字来定义类。 5. 关于方法功能描述错误的是(方法只能用于存储数据)[单选题] - 方法是执行特定任务的代码块,不仅可以用于处理数据,还可以进行逻辑判断、控制流程等。 6. 关于方法形参描述正确的是(形参允许方法接受不同类型的实参)[单选题] - 形参是方法签名的一部分,用于接收调用时传入的值。 7. 在定义方法时在最后一个形参的类型后增加“...”,相关描述错误(这表示方法可以接受任意数量的该类型参数)[单选题] - 这是可变参数列表的语法,允许方法接收零个或多个同类型的参数。 8. 利用方法中的(return)语句可为调用方法返回一个值[单选题] - return语句用于结束方法并返回一个结果值。 9. 以下关于return语句使用描述错误的有(return语句可以在方法体的任何位置使用)[多选题] - return语句必须在方法的最后执行,或者在满足某个条件后执行,不能随意使用。 10. void的含义描述正确的是(表示方法没有返回值)[单选题] - 在Java中,void表示方法不返回任何类型的结果。 11. main()方法的返回类型是(void)[单选题] - main方法是程序的入口点,返回类型是void。 12. 下面的方法声明中,哪个是正确的(public int add(int a, int b))[单选题] - 正确的方法声明包括返回类型、方法名、参数列表。 13. 下列方法定义中,不正确的是(public void print() string message)[单选题] - 参数列表中,类型和变量名之间应有空格。 14. 以下关于构造方法特点理解正确的选项有(构造方法无返回类型、构造方法与类名相同、用于初始化对象)[多选题] - 构造方法是用于初始化新创建对象的特殊方法。 15. 下面关于构造方法描述不正确的是(构造方法可以返回一个值)[单选题] - 构造方法不能有返回值,包括void。 16. 有一个类A,以下为其构造方法的声明,其中正确的是(public A(int x) { ... })[单选题] - 正确的构造方法声明应该与类名一致,并且没有返回类型。 17. 设i,j为类X中定义的double型变量名,下列X类的构造方法中不正确的是(public X(double i, double j) { this.i = i; this.j = j; })[单选题] - 如果没有提供更多信息,无法判断哪个是不正确的。 18. 对于任意一个类,用户所能定义的构造方法的个数至多为(无数个)[单选题] - 用户可以根据需要定义任意多个构造方法。 19. 构造方法何时被调用(当创建类的新实例时)[单选题] - 构造方法在创建对象时自动调用。 20. 以下(new)是专门用于创建对象的关键字[单选题] - 使用new关键字配合类名和构造方法来创建对象。 21. 在方法调用过程中,位于方法名之后圆括号的变量被称为(实参)[单选题] - 实参是调用方法时传递给形参的实际值。 22. 关于面向对象的说法正确的是(面向对象编程基于类和对象的概念)[单选题] - 面向对象编程是一种编程范式,强调使用类和对象来组织和设计软件。 23. 一条return语句将给调用程序返回(1)个值[单选题] - return语句返回一个值,可能是基本类型或对象引用。 24. 下列关于成员变量描述正确的有(成员变量在类的范围内,而非方法内)[多选题] - 成员变量是类级别的变量,可以被类的所有方法访问。 25. 在Java中,变量可以分为全局变量和(局部)变量[单选题] - 局部变量在方法或构造方法内部声明,仅在该作用域内有效。 26. 下列关于局部变量描述正确的有(局部变量必须先声明后使用)[多选题] - 局部变量的作用范围限制在其所在的代码块,如方法或构造方法。 27. 下列关于成员变量与局部变量的说法不正确的是(两者都可以在类的任何地方声明)[单选题] - 成员变量在类级别,局部变量在方法级别。 28. 关于this关键字描述正确的选项有(this可以用来引用当前对象的属性或方法)[多选题] - this关键字在方法内使用,指代当前对象。 29. 下列选项中关于Java中super关键字的说法正确的是(super用于访问父类的成员)[多选题] - super用于调用父类的构造方法或访问父类的成员。 30. 下列选项中,那个不是Java的访问修饰符(friend)[单选题] - Java的访问修饰符包括public, protected, private和默认(包私有)。 31. 在定义抽象类需要用到关键字(abstract)[单选题] - 抽象类使用abstract关键字定义,它可能包含抽象方法。 32. 关于抽象类,下列说法错误的是(抽象类可以有构造方法)[多选题] - 抽象类可以有构造方法,用于初始化其子类的对象。 33. 关于访问修饰符访问权限由小到大描述正确的是(private < default < protected < public)[单选题] - 访问权限从私有到公共依次增大。 34. 下列关于static关键字的使用描述正确的选项有(static变量属于类,而非对象)[多选题] - static关键字用于声明静态成员,包括变量和方法。 35. 下列关于静态代码块的描述中,正确的是(静态代码块在类加载时执行)[多选题] - 静态代码块在类首次加载时执行,用于初始化静态变量。 36. 类的(私有)成员只能被该类的成员访问[单选题] - 私有成员(private)只能在类的内部访问。
2014-04-16 上传
一.阅读程序题 1. #include class CSample { int i; public: CSample() { i=1; cout<<i++; } void disp() { cout<<++i; } ~CSample() { cout<<i++; } }; void main() { CSample s; s.disp(); } 2. #include class Sample { private: int x; public: Sample(){ cout<<(x=0);} Sample(int i,int j) {cout<<(x=i+j);} ~Sample(){cout<<x;} }; void main() { Sample *p1=new Sample, *p2=new Sample(3,4); delete p1; delete p2; } 3. #include class Sample { public: Sample(){} Sample(int a){x=a;} Sample(Sample &a){x=a.x++;} void disp(){cout<<x++;} private: int x; }; void fun(Sample &s1, Sample s2) { s1.disp ();s2.disp (); } void main() { Sample s1(2),s2=s1; fun(s2,s1); s1.disp ();s2.disp (); } 4. #include class Sample { int x; public: Sample(){x=0;} Sample(int a) {cout<<(x=a);} ~Sample() { cout<<++x; } void disp() { cout<<x; } }; void main() { Sample s1(2); s1.disp (); s1.~Sample (); } 5. #include class Sample { int x; public: Sample(){cout<<(x=0);} Sample(int i){cout<<(x=i);} ~Sample(){cout<<x<<endl;} void disp(){cout<<x;} }; void main() { Sample s(3); int i=0; if(i=0) { Sample s; s.disp (); } } 6. #include class Sample { public: Sample(){cout<<"Constructor"<<endl;} ~Sample(){cout<<"Destructor"<<endl;} }; void fn(int i) { static Sample c; cout<<"i="<<i<<endl; } void main() { fn(10); fn(20); } 7. #include class Sample { int n; public: Sample(int i){n=i;} friend int add(Sample &s1,Sample &s2); }; int add(Sample &s1,Sample &s2) { return s1.n+s2.n; } void main() { Sample s1(10),s2(20); cout<<add(s1,s2)<<endl; } 8. #include class B; class A { int i; public: int set(B&); int get(){return i;} A(int x){i=x;} }; class B { int i; public: B(int x){i=x;} friend A; }; int A::set(B &b) { return i=b.i; } void main() { A a(1); B b(2); cout<<a.get()<<","; a.set(b); cout<<a.get()<<endl; } 9. #include float f(float x, float y) { return x+y; } int f(int x, int y) { return x+y; } void main() { float a, b, c; a = b = 50.5; c = f(a, b); cout << c; } 10. #include int max(int x, int y) { if(x > y) return x; else return y; } int max(int x, int y, int z) { return max(x, max(y, z)); } void main() { int a = 3, b = 4, c = 5, d = 0; d = max(a, b); cout << d; } 11. #include int p(int x = 4, int y = 5) { return x + y; } void main() { int a = 3, b = 4, c = 0; c = p(b); cout << c; } 12. #include int add(int x, int y = 8); void main() { int a = 6; cout << add(a, add(a)) << endl; } int add(int x, int y) { return x + y; } 13. #include int p(int x = 4, int y = 5, int z = 6) { return x + y + z; } void main() { int a = 3, b = 4, c = 5; c = p(b, a); cout << c; } 14. #include int p(int x = 4, int y = 5, int z = 6) { return x + y + z; } void main() { int a = 3, b = 4, c = 0; c = p(b, c); cout << c; } 15. #include int n = 1; void Fun(); void main() { n++; Fun(); if(n > 0) { int n = 5; cout<< "Block:n=" << n << ","; } cout << "Main:n = " <<n<< endl; } void Fun() { int n = 10; cout << "Fun:n="<<n << ","; }