东软专业力考试--Java面向对象编程
1. 关于Java包的声明和使用,下列说法正确的是?
A. 一个Java源文件中只能有一条package语句,且必须是代码的第一行有效语句
B. 包名可以使用Java关键字命名
C. 没有package语句的类会自动归属于默认包,但默认包中的类不能被其他包中的类导入
D. import static语句只能导入静态变量,不能导入静态方法
答案:A
解析: package语句必须是Java文件的第一行有效代码(除空行和注释外)。包名不能使用Java关键字,没有package语句的类属于默认包,但默认包中的类可以被同一目录下的其他类访问,只是不能被明确导入。import static可以导入静态变量和静态方法。
2. 关于访问修饰符,以下描述错误的是?
A. protected修饰的成员可以被同一包中的类访问,也可以被不同包中的子类访问
B. 默认访问权限(无修饰符)的成员可以被同一包中的其他类访问
C. private成员只能在定义它的类内部访问,包括该类的内部类也可以访问其外部类的private成员
D. public类可以被任何其他类访问,但一个Java文件中最多只能有一个public类
答案:D
解析: 一个Java源文件中可以没有public类,也可以有多个public类,但文件名必须与public类的类名一致,因此通常一个文件只定义一个public类。其他选项关于访问修饰符的描述是正确的。
3. 关于类和对象,下列说法错误的是?
A. 类是对某一类对象的抽象定义,而对象是类的具体实例
B. 类的成员变量有默认初始值,而局部变量必须显式初始化才能使用
C. 对象在内存中的存储布局主要包括对象头、实例数据和对齐填充
D. 两个引用变量使用==比较时,比较的是它们所指对象的内容是否相同
答案:D
解析: ==对于引用类型比较的是引用值(即内存地址),而不是对象内容。要比较对象内容是否相同,应使用equals()方法。
4. 关于构造方法,以下说法正确的是?
A. 构造方法必须声明为public
B. 如果一个类没有定义任何构造方法,编译器会自动生成一个公有的无参构造方法
C. 构造方法可以重写,但不能重载
D. 在构造方法中,this()或super()调用必须是第一行语句,且不能同时存在
答案:D
解析: 构造方法中this()或super()调用必须位于第一行且不能共存。构造方法可以是任意访问权限;如果没有定义任何构造方法,编译器会生成一个默认的(与类同权限)无参构造方法;构造方法可以重载,但不能重写。
5. 关于Java继承,以下描述正确的是?
A. 子类可以继承父类的所有成员,包括private成员和构造方法
B. 子类可以同时继承多个父类,实现多重继承
C. 使用final修饰的类可以被继承
D. 子类继承父类时,使用extends关键字
答案:D
解析: Java是单继承,一个类只能直接继承一个父类。子类不能继承父类的private成员和构造方法。final类不能被继承。
6. 下列哪项最能体现封装的优点?
A. 允许子类修改父类的实现细节
B. 通过private修饰成员变量,并提供public的getter/setter方法进行访问控制
C. 将类的所有成员
