java面向对象考试题
- 格式:doc
- 大小:57.00 KB
- 文档页数:14
OOP考试题考试时间:120分钟考试总分:100分一、选择题(不定项选择)(2分/题*37 = 74分)1.类A,B的定义如下:class A {private int a = 100;A() {System.out.print("A()");System.out.println(a);}}class B extends A {private int a = 200;B() {System.out.print("B()");System.out.println(a);}}运行下面的代码:new B();输出的结果是:()。
A.A() 100B() 200B.A() 200B() 200C.B() 200A() 100D.B() 200A() 2002.程序执行的结果是:()。
public class Point{int y = 7;public void step(int y) {y += y;System.out.println(y);}public static void main(String[] args) { Point p = new Point();p.step(10);}}A.14B.20C.10D.173.下面代码运行的结果是()class F{String name = “name_F”;private int age;public F(){}}class C extends F{String name = “name_C”;public C(){}public static void main(String[] args){F f = new C();C c = new C();System.out.println( +”“+); }}_C name_C_C name_F_F name_C_F name_F4.(单选题)程序的执行结果是:()。
java面向对象练习题# Java面向对象练习题一、选择题1. 在Java中,以下哪个关键字用于定义类的访问权限为“仅包内可见”?- A. public- B. private- C. protected- D. 默认(不写访问修饰符)2. 以下哪个是Java中的构造方法?- A. 与类名相同,没有返回类型的方法- B. 与类名不同,没有返回类型的方法- C. 与类名相同,有返回类型的方法- D. 与类名不同,有返回类型的方法3. 在Java中,哪个关键字用于实现类的继承?- A. extends- B. implements- C. override- D. abstract4. 以下哪个是Java中类的成员变量?- A. 局部变量- B. 实例变量- C. 静态变量- D. 方法参数5. 以下哪个是Java中的多态性?- A. 接口- B. 继承- C. 封装- D. 抽象类二、简答题1. 解释Java中的封装性,并给出一个封装的类的例子。
2. 描述Java中接口和抽象类的区别。
3. 什么是Java中的继承?请举例说明如何使用继承。
三、编程题1. 创建一个名为`Person`的类,包含姓名(name)、年龄(age)和性别(gender)三个属性。
为每个属性提供getter和setter方法。
2. 编写一个名为`Student`的类,它继承自`Person`类,并添加一个名为`studentID`的属性。
为`studentID`提供getter和setter方法,并重写`toString`方法以返回学生的详细信息。
3. 创建一个接口`Movable`,包含一个方法`move()`。
然后创建一个名为`Car`的类实现该接口,并提供`move`方法的具体实现。
四、综合应用题1. 设计一个简单的银行账户系统,包含以下类:- `Account`:基本账户类,包含账户ID、账户余额和存款(deposit)与取款(withdraw)方法。
java面向对象程序设计系班级姓名成绩A.没有区别,这两个结构任何情况下效果一样B.while循环比do…while循环执行效率高C.do…while循环执行次数可能为0D.while循环执行次数可能为06.关于for循环和while循环的说法哪个正确?()A.while循环先判断后执行,for循环先执行后判断。
B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换D.两种循环结构中都必须有循环体,循环体不能为空7.下列修饰符中与访问控制无关的是()A.private B.publicC.protected D.final8.方法内的形参:()A.必须定义多个形参B.可以没有C.至少有一个D.只能是简单变量9.throws的作用:()A.表示方法可能会抛出例外B.表示后面是方法的输出量C.方法的标志,每个方法都必须有D.没有意义10.在Java语言中,整型常量123占用的存储字节数是:()A.1B.2C.4 D.811.关于对象成员占用内存的说法哪个正确?()A.同一个类的对象共用同一段内存B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间C.对象的方法不占用内存D.以上都不对12.return语句:()A.只能让方法返回数值B.方法都必须含有C.方法中可以有多句return D.不能用来返回对象13.下列说法哪个正确?()A、一个程序可以包含多个源文件B、一个源文件中只能有一个类C、一个源文件中可以有多个公共类D、一个源文件只能供一个程序使用14.关于方法main()的说法哪个正确?()A.方法main()只能放在公共类中B.main()的头定义可以根据情况任意更改C.一个类中可以没有main()方法D.所有对象的创建都必须放在main()方法中15.构造函数何时被调用?()A、创建对象时B、类定义时C、使用对象的方法时D、使用对象的属性时16.抽象方法:()A、可以有方法体B、可以出现在非抽象类中C、是没有方法体的方法D、抽象类中的方法都是抽象方法17.关于继承的说法正确的是:()A、子类将继承父类所有的属性和方法。
面向对象程序设计JAVA试题一、单项选择题(共10题,每题2分,共20分)1.以下哪个选项是正确的Java访问修饰符?A. PublicB. PrivateC. FinalD. Static2.在Java中,接口可以实现多继承的目的吗?A. 是的B. 不是3.以下哪个关键字用于创建Java对象的实例?A. NewB. InstanceC. CreateD. Object4.Java中的构造方法有什么特点?A. 与类名相同B. 可以有返回类型C. 可以被继承D. 可以被私有化5.下面的代码在Java中是什么类型的声明?```String[] names = new String[5];```A. 变量声明B. 方法声明C. 类声明D. 接口声明6.Java中的继承关系是如何表示的?A. 通过extends关键字B. 通过implements关键字C. 通过super关键字D. 通过this关键字7.Java中的多态是指什么?A. 同一个对象可以引用不同类型的实例B. 同一个对象可以有不同的方法C. 同一个对象可以有多个实例D. 同一个对象可以有多个子类8.以下哪个选项是Java中的关键字?A. StringB. IntegerC. BooleanD. Final9.Java中的封装是什么意思?A. 隐藏对象的实现细节B. 创建新的对象类型C. 允许对象进行通信D. 限制对象的访问权限10.Java中的抽象类和接口有什么区别?A. 抽象类可以实现方法,接口不能B. 抽象类可以被实例化,接口不能C. 抽象类可以继承多个类,接口只能继承一个D. 抽象类可以有变量,接口不能二、编程题请写一个Java程序,实现一个学生管理系统。
要求有以下功能:1. 添加学生信息(包括学号、姓名、性别、年龄、成绩等字段)2. 修改学生信息3. 删除学生信息4. 查询学生信息5. 统计学生数量6. 按照成绩排序学生信息三、综合题某公司需要开发一个员工管理系统,你被指派为项目经理,请设计一个基于面向对象的Java程序,实现以下功能:1. 添加员工信息(包括员工号、姓名、性别、年龄、职务等字段)2. 修改员工信息3. 删除员工信息4. 查询员工信息5. 统计员工数量6. 按照年龄排序员工信息请按照上述要求编写你的Java程序,并确保程序的可读性和可维护性。
Java面向对象试题共30道题,每题3分,满分90分,60分算及格,不及格的要补考。
1 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用()关键字来申明父类的这些方法。
(选择一项a Finalb Staticc Abstractd Void2 给定两个java程序,如下:public interface Face{int counter = 40;}public class Test implements Face{private static int counter;public static void main(String[]args{System.out.println(++counter;}}Test.java 的编译运行结果是()。
(选择一项a 40b 41c 0d 13 给定java代码,如下:public class Test{static int i;public int aMethod( {i++;return i;}public static void main(String [] args{Test test = new Test( ;test.aMethod( ;System.out.println(test.aMethod( ;}}编译运行后,输出结果是()。
(选择一项a 0b 1c 2d 34 给定java代码,如下:abstract class Shape{abstract void draw( ;}要创建Shape类的子类Circle,以下代码正确的是()。
(选择二项a class Circle extends Shape{int draw( {}}b abstract class Circle extends Shape{}c class Circle extends Shape{void draw( ;d class Circle extends Shape{void draw( {}}5 给定java代码,如下:class Parent{public void count( {System.out.println(10%3;}}public class Test extends Parent{ public void count(int i{System.out.println(10%i;}public static void main(String[]args{ Parent p = new Test( ;p.count(3;}}编译运行,结果是()。
java面向对象考试题及答案一、选择题(每题2分,共10分)1. 在Java中,以下哪个关键字用于定义一个类?A. classB. structC. interfaceD. enum答案:A2. 以下哪个选项是Java中类的成员变量?A. 方法B. 构造函数C. 属性D. 包答案:C3. 在Java中,哪个关键字用于实现类的继承?A. extendsB. implementsC. importD. package答案:A4. 在Java中,以下哪个关键字用于定义一个接口?A. classB. structC. interfaceD. enum答案:C5. 在Java中,以下哪个关键字用于定义一个枚举类型?A. classB. structC. enumD. interface答案:C二、填空题(每题2分,共10分)1. 在Java中,一个类可以继承另一个类的______方法。
答案:public2. 当一个类实现了一个接口,它必须提供接口中所有方法的______实现。
答案:具体3. Java中的______关键字用于定义一个包。
答案:package4. 在Java中,______关键字用于声明一个方法,该方法没有返回值。
答案:void5. 在Java中,______关键字用于声明一个方法,该方法返回一个布尔值。
答案:boolean三、简答题(每题5分,共20分)1. 简述Java中构造函数的作用。
答案:构造函数是类的特殊方法,用于在创建对象时初始化对象的状态。
它具有与类同名的名称,并且没有返回类型。
2. 描述Java中接口和抽象类的区别。
答案:接口是完全抽象的,不能包含任何实现细节,而抽象类可以包含实现细节。
接口中的方法默认是public和abstract的,而抽象类可以有非抽象方法。
一个类可以实现多个接口,但只能继承一个抽象类。
3. 什么是Java中的多态性?请举例说明。
答案:多态性是指允许不同类的对象对同一消息做出响应的能力。
java面向对象试题及答案1. 试题一题目:什么是面向对象编程?请简要描述面向对象编程的优势和特点。
答案:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,将程序中的数据和操作数据的方法进行了封装,使得程序更加模块化和易于理解。
面向对象编程的主要特点包括封装、继承和多态。
封装使得数据和对数据的操作集中在一个对象中,可以隐藏内部实现细节,提供公共的接口进行访问,增加了程序的安全性和灵活性。
继承允许新建的类继承已有类的属性和方法,通过扩展和重写已有类的功能,减少了代码的重复性,提高了代码的复用和可维护性。
多态允许不同的对象对相同的消息作出不同的响应,通过接口和抽象类的使用,实现了更加灵活和可扩展的程序设计。
面向对象编程的优势包括了代码的重用性、可维护性、可扩展性和灵活性。
通过封装和继承的应用,可以减少代码重复,提高开发效率,并且通过多态的应用,可以实现程序的灵活性,方便后续的扩展和修改。
2. 试题二题目:什么是类?请简要描述类的特点和组成部分。
答案:类是面向对象编程中的核心概念,是对一类具有相同属性和行为的对象进行抽象和封装的模板。
类是用来创建对象的蓝图,可以通过实例化类来创建对象。
类的特点包括了封装、继承和多态。
类通过封装将属性和方法进行了封装,提供了公共的接口与外部进行交互,隐藏了内部实现细节。
继承允许新建的类继承已有类的属性和方法,在原有基础上进行修改和扩展。
多态允许不同的对象对相同的消息作出不同的响应,实现了程序的灵活性和可扩展性。
类的组成部分包括了属性(Field)和方法(Method)。
属性(也称为成员变量)用于描述对象的状态,可以是基本类型或其他类的对象。
方法用于描述对象的行为,可以是处理属性的操作,也可以是其他业务逻辑的实现。
3. 试题三题目:请简要解释传值和传引用的区别,并用代码示例说明。
答案:传值和传引用是在方法调用时,参数传递的两种方式。
1.下面代码的输出结果是A.300 300B.100 100C.300 100D.100 3002.程序执行的结果是:::x =" + x++; }}A.doStuff:x =7B. main: x = 7B.doStuff:x =7main: x = 6C.doStuff:x =6main: x = 7D.doStuff:x =6main: x = 63.下列关于JVM的内存结构描述正确的是:A.类的各种信息在方法区中保存B.堆用于存放程序运行过程当中所有的局部变量C.栈用于存储使用new关键字创建的对象D.数组属于JVM的内存结构4.下列代码的输出结果是:A.cB.iC.dD.s5.程序执行的结果是:A.nullB.TomC.JackD." "6.关于构造方法,下列说法错误的是:A.构造方法不可以进行方法重写B.构造方法用来实例化一个新的对象C.构造方法具有和类名相同的名称D.构造方法不返回任何数据类型7.关于 Java 中继承的特点,下列说法正确的是:A.使类的定义复杂化B.Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的C.子类继承父类的所有成员变量和方法,包括父类的构造方法D.不可以多层继承,即一个类不可以继承另一个类的子类8.下列代码运行的结果是:A.Value: 3B.Value: 8C.Value: 13D.Value: 189.下列代码编译和运行的结果是:A.输出:0000B.输出:4321C.代码public EmployeeString id {行,出现编译错误D.抛出运行时异常10.下列代码的运行结果是:A.peepB.barkC.meowD.抛出运行时异常11.下列代码编译和运行的结果是:A.输出:TestAB.输出:TestBC.输出:TestA TestBD.编译错误12.请看下列代码:class One {void foo {}}class Two extends One {// insert method here}下列选项中的代码,放置在<插入代码>处无编译错误的是: A.int foo { / more code here / }B. protected void foo { / more code here / }C. public void foo { / more code here / }D. private void foo { / more code here / }13.下列选项中,不属于Java 的访问修饰符的是:A.privateB.protectedC.friendlyD.public14.下列代码的输出结果是:A.300-100-100-100-100B.300-300-100-100-100C.300-300-300-100-100D.300-300-300-300-10015.下列代码运行的结果是:public class Base { public static final String FOO = "foo";A.foofoofoofoofooB.foobarfoobarbarC.foobarfoofoofooD.foobarfoobarfoo16.关于下列代码说法正确的是:A.编译错误B.运行时抛出异常C.运行后,fa对象属性id的值没有改变,应然是42D.运行后,fa对象属性id的值改变成新的值6917.请看下列代码编译和运行的结果是:A.sun 2B.null 2C.null 1D.运行时抛出NullPointerException异常18.下列代码的输出结果是:A.0, 0,0B.150, 60, 0C.150, 150, 150D.抛出运行时异常19.请看下列代码:public abstract class Employee {protected abstract double getSalesAmount;public double getCommision {return getSalesAmount 0.15;estA {}}class Sales extends Employee {<插入代码>}在<插入代码>处填入的方法正确的是:A.double getSalesAmount { return 1230.45; }B.public double getSalesAmount { return 1230.45; }C.private double getSalesAmount { return 1230.45; }D.protected double getSalesAmount { return 1230.45; }20.关于下列代码说法正确的是:public interface A { public void doSomethingStringthing;}public class AImpl implements A { public void doSomethingString msg { }}public class B { public A doit { return null; } public String execute { return null; }}public class C extends B { public AImpl doit { return null; } public Object execute { return null; }} A. 所有类和接口都编译成功 B.类B编译失败C.类Aimpl编译失败D.类C编译失败21.关于下列代码说法正确的是:interface A { public void aMethod;}interface B { public void bMethod;}interface C extends A, B { public void cMethod;}class D implements B { public void bMethod {}}class E extends D implements C { public void aMethod {} public void bMethod {} public void cMethod {}}A.编译失败B.如果定义D e = new E;, 那么 e.bMethod;调用D类的bMethod方法C.如果定义D e = Dnew E;, 那么 e.bMethod;调用D类的bMethod方法D.如果定义D e = Dnew E;, 那么 e.bMethod;调用E类的bMethod方法22.请看下列代码:处理请求";}};}}如果上述代码采用回调模式编写,下列关于ServletAction的定义正确的是:A. public static class ServletAction { public void doService;}B.public final class ServletAction { public void doService;}C.public class ServletAction { public void doService;}D. public interface ServletAction { public void doService;}23.下列代码运行的结果是:A.HelloB. Hello WorldC. Hello World 5D.运行后无输出24.请看下列代码编译和运行的结果是:A.输出:testB.输出:nullC.代码行,编译出错D.代码public String toString {行,编译出错25.请看下列代码:关于上述代码说法正确的是:A.在第5行出现编译错误,fn方法的参数必须用final修饰B.在第3行出现编译错误,在方法的内部不能写类C.在第8行出现编译错误,在方法的内部不能实例化Inner类的对象D.运行代码,控制台输出100A1,正确答案:C2,正确答案:D3,正确答案:A4,正确答案:A5,正确答案:B6,正确答案:B7,正确答案:B8,正确答案:A9,正确答案:C10,正确答案:D11,正确答案:B 12,正确答案:BC 13,正确答案:C 14,正确答案:B 15,正确答案:D 16,正确答案:A 17,正确答案:D 18,正确答案:C 19,正确答案:BD 20,正确答案:D 21,正确答案:D 22,正确答案:D 23,正确答案:A 24,正确答案:A 25,正确答案:A。
Java面向对象测试试题一、单选题1. 下面哪个关键字可以用来声明一个抽象类?A) abstractB) finalC) privateD) protected2. 在Java中,一个类可以同时继承多个类吗?A) 可以B) 不可以3. 在Java中,接口的成员变量默认是什么修饰符?A) privateB) protectedC) publicD) 默认不写修饰符4. 下面哪种访问权限修饰符可以让子类访问父类的成员变量?A) privateB) protectedC) publicD) 默认不写修饰符5. 下面哪个关键字可以用来声明一个常量?A) constantB) finalC) staticD) default二、填空题1. 在Java中,可以通过____关键字来引入其他包中的类。
2. 在Java中,____关键字可以用来防止重写一个方法。
3. 在Java中,____关键字表示当前对象的引用。
4. 在Java中,____关键字用于表示父类。
三、编程题请编写一个Java类,实现一个矩形的类,要求具有以下功能:1. 拥有长度和宽度两个属性。
2. 拥有计算矩形面积的方法。
3. 能够输出矩形的属性信息。
```javapublic class Rectangle {private double length;private double width;public Rectangle(double length, double width) {this.length = length;this.width = width;}public double getArea() {return length * width;}public void printInfo() {System.out.println("Length: " + length);System.out.println("Width: " + width);}}```使用上述代码,可以创建一个矩形对象并调用相应方法来获取矩形的面积和属性信息。
《使用Java实现面向对象编程》阶段测试-笔试试卷一、选择题(共25题,每题4分,满分100分)1) 在Java类中,使用以下()声明语句来定义公有的int型常量MAX。
A. public int MAX = 100;B. final int MAX = 100;C. public static int MAX = 100;D. public static final int MAX = 100;2) 在Java中,以下关于方法重载的说法中错误的是()。
A. 方法重载要求方法名称必须相同B. 重载方法的参数列表必须不一致C. 重载方法的返回类型必须一致D. 一个方法在所属的类中只能被重载一次3) 给定Java代码如下所示,在横线处新增以下()方法,是对cal方法的重载。
public class Test{public void cal(int x, int y, int z) {}}A. public int cal(int x, int y, float z){ return 0; }B. public int cal(int x, int y, int z){ return 0; }C. public void cal(int x, int z){ }D. public void cal(int z, int y, int x){ }4) 在Java中,下面对于构造函数的描述正确的是()。
A. 类必须显式定义构造函数B. 构造函数的返回类型是voidC. 构造函数和类有相同的名称,并且不能带任何参数D. 一个类可以定义多个构造函数5) 下面Java代码的运行结果是()。
class Penguin {private String name=null; // 名字private int health=0; // 健康值private String sex=null; // 性别public void Penguin() {health = 10;sex = "雄";System.out.println("执行构造方法。
第一题:public static void main (String[] args){String[] fileNames = { "", "","","","" };for (String fileName : fileNames) {if (".exe")) {(".exe"))+" ");}}}(".exe") 判断是否已".exe"结尾substring(0,4) 截取0-3的字符串,不包含4lastIndexOf(".exe") 获取".exe"最后一次出现的位置答案:bcd cde efg第二题:public static void go(Long n) {"Long");}public static void go(Short n) {"Short");}public static void go(int n) {"int");}public static void main(String[] args) {short y = 6;long z = 7;go(y);go(z);}虽然y是short型的,但是编译器把它转换为int型答案:int Long第三题:public static void main(String[] args){String test = "Test A. Test B. Test C.";String regex = "\\.\\s*";String[] result = (regex);for(String s : result)+ " ");}\s 空白字符 *表示0个或任意多个 ("\\.")按.拆分答案: Test A Test B Test C第四题:public class AA{private Long userId;private String nickName;public Long getUserId() {return userId;}public void setUserId(Long userId) {= userId;}public String getNickName() {return nickName;}public void setNickName(String nickName) {= nickName;}public static void main(String[] args){AA m1=new AA();(new Long(100001));("mick");AA m2=new AA();(new Long(100001));("mick");}equals方法返回值也是return m1==m2答案:false false第五题运行下列代码,输出为false的是:()。
st1 = "abc";"abc" == st1);st2 ="abc""abc")));i = 100; == i);list = new ArrayList();答案:D第六题public interface Cookie{Cookie cookie=new Cart ("小面包","盼盼");}public class Cart implements Cookie{private String name;private String production;public Cart(String name,String production){=name;=production;}public void smell(){cookie =new Cart("蛋黄派","达利园");}}final 要求属性不可更改cookie =new Cart("蛋黄派","达利园"); 这个修改了cookie的地址,所以报错第七题(多选)请看下列代码:public abstract class Shape {int x;int y;public abstract void draw();public void setAnchor(int x, int y) {= x; = y;}}下列选项中能正确使用Shape类的是:class Circle implements Shape { private int radius; }abstract class Circle extends Shape { private int radius; }class Circle extends Shape { private int radius; public void draw(); }class Circle extends Shape {private int radius;public void draw() {}}抽象类不可以实例化,如果一个类继承了抽象类,必须重新其抽象方法答案:BD第八题(多选)请看下列代码:package ;public class Geodetics {public static final double DIAMETER = ;}访问静态常量DIAMETER的方式正确的是:public class TerraCarta {public double halfway(){return ;}}public class TerraCarta {public double halfway(){return DIAMETER/;}};public class TerraCarta {public double halfway(){return ;}}.*;public class TerraCarta {public double halfway(){return ;}}答案:AD第九题(多选)在Java语言中,下列说法正确的是()。
A.一个接口可以继承多个接口B.一个类可以继承多个类C.一个类可以实现多个接口D.一个类可以有多个子类答案:ACD第十题(多选)在<插入代码>处,填入下列代码编译正确的是:public void foo(int[] x) { < 插入代码> }(int z : x) (int z : x) ( ()) ());( int i=0; i< ; i++ ) 答案:BD第十一题(多选)查看如下代码:class A { protected int method (int a, int b) { return 0; }}下列选项中,可以在 A 的子类中使用的是()。
int method (int a, int b) { return 0; }int method(int a, int b) { return 0; }int method(int a, long b) { return 0; }short method(int a, int b) { return 0; }A:重写A类中的方法 C:重载A类中的方法答案:AC第十二题(多选)在Java语言中,下列说法正确的是:()。
和StringBuilder的区别在于:StringBuffer是线程安全的而StringBuilder不是。
是不可变对象,而StringBuffer中封装的字符串数据是可以动态改变的C.判断两个StringBuilder对象的字符序列是否相同,可以调用其equlas方法进行比较。
的重写了equals方法,重写的逻辑是:字符序列相同的String对象equals方法返回true。
答案:ABD第十三题(多选)题目代码的功能为:输出每个字符在一个字符串中出现的次数(不区分大小写)。
String str = "ewrwqFrewqfsadfdsfdsfs";str=();int max_length = 0;while () > 0) {《插入代码》}A. int length = ();char first=(0);String strNew = (first), "");if (length>()) {max_length = length - ();":"+max_length);}B. int length = ();char first=(0);String strNew = (first), "");if (length>()) {max_length = length - ();str = strNew;":"+max_length);}C. int length = ();String first = (0, 1);String strNew = (first, "");if (length>()) {max_length = length - ();str = strNew;":"+max_length);}D. int length = ();String first = (0, 1);String strNew = (first, "");if (length>()) {max_length = length - (); ":"+max_length);}答案:BC第十四题(多选)下面的方法属于StringBuffer的是:()。
答案:BCD第十五题(多选)请看下列代码:public class Old {public static Object get(List list) {return (0);}}以下选项调用get方法,能编译通过的是:o = (new LinkedList());o = (new LinkedList<>());s = (new LinkedList<String>());s = (String)(new LinkedList<String>());答案:AD1.重写必须继承,重载不用。