学号:姓名:
第三章面向对象程序设计作业
一、判断题
1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对
2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对
3、接口中的成员变量全部为常量,方法为抽象方法。对
4、抽象类可以有构造方法,可以直接实例化。错
5、对static方法的调用可以不需要类实例。对
6、包含抽象方法的类一定是抽象类。对
7、方法中的形参可以和方法所属类的属性同名。对
8、接口无构造器,不能有实例,也不能定义常量。错
9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对
10、Java应用程序的入口main方法只有一种定义法。对
二、选择题
1、下列答案正确的是(A )
A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public
B) 在同一个Java源文件中只能包含一个类,并被声明为public
C) 在同一个Java源文件中可以包含多个类,都可以被声明为public
D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default
2、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, abstract
C) static, protected D) static
6、Java的封装性是通过(A )实现的
A) 访问控制B) 设计内部类
C) 静态域和静态方法D) 包
7、下列接口或类不属于java.util.*包的是( D )
A) Collection B)Vector C) Map D) Integer
8、下述哪一组方法,是一个类中方法重载的正确写法?( 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=true
12、阅读下面的程序,输出结果是( 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、下述那一个保留字不是类及类成员的访问控制符。(C )
A) public B) private
C) static D) protected
15、假设有个类已经定义了下述的实例变量:
int num1=10;
int num2=20;
String word = new String(“exam”);
double answer=25.5;
另外定义了下列方法头:
public int stuff(String s, int x, int y)
以下哪个选择是正确的方法调用? ( A )
A)num1=stuff(“hello”,num1,num1);
B)answer=stuff(word,answer,num2);
C)num2=stuff(“hello”,num1,answer);
D)num1=stuff(num1,num2,word);
16、下哪一项不是构造方法的特点:( C )
A 构造方法名必须与类名相同;
B 构造方法不具有任何返回类型;
C 任何一个类都含有构造方法;
D 构造方法修饰词只能是public。
17、定义类B和类C如下,并将其保存为:B.java文件,得到的结果是( B ) class B
{int b;
B(int i){b=i;}
}
class C extends B
{double c=7.8;}
A)代码能够成功编译运行
B)代码无法编译因为类B不是一个应用程序或小程序
C)代码无法编译,因为类B没有定义不带参数的构造方法
D)代码无法编译,因为类B没有定义一个不带参数的构造方法
18、设已声明了一个类A的两个对象a1,a2,为了初始化a1和a2,下面语句正确的是( D )
A)a1,a2=new A(); B)a1=A.new();a2=A.new();
C)a1=new();a2=new(); D)a1=new A();a2=new A();
19、下列选项中,用于在定义包时声明包名的关键字是。( B )
A) import B) package C) interface D) protected
20、下面关于继承的哪些叙述是正确的? ( A )
A) 在java中只允许单一继承。
B) 在java中一个类只能实现一个接口。
C) 在java中一个类不能同时继承一个类和实现一个接口。
D) java的单一继承使代码更可靠。
21、定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:( D )
A) private class MyClass extends Object B) class MyClass extends Object
C) public class MyClass D) public class MyClass extends Object
22、指出下列哪个方法与方法public void add(int a){}为合理的重载方法。( D )
A) public int add(int a) B) public long add(long a)
C) public void add(int a,int b) D) public void add(float a)
23、类Line的定义
class Line{
private int a,b;
public Line (int x,int y)
{
this.x=x;
this.y=y;
}
}
其中的this代表?( C )
A) 类名Line B) 父类的对象
C) Line类的当前对象D) this指针
24、在Java语言中,类Cat是类Animal的子类,Cat的构造方法中有一句“super()”,
该语句表达了什么概念?( C )
A) 调用类Cat中定义的super()方法
B) 调用类Animal中定义的super()方法
C) 调用类Animal的构造方法
D) 语法错误
25、某类的成员方法只能被自己调用,声明该函数恰当修饰符是?( C )
A) public B) protected
C) private D) 无修饰符
26、下面关于变量及其范围的陈述哪些是对的? ( C )
A) 实例变量是类的成员变量。
B) 实例变量用关键字static声明。
C) 在方法中定义的局部变量在该方法被执行时创建。
D) 局部变量在使用前必须被初始化。
27、在java中,哪一个关键字使类不能派生出子类。( A )
A) final B) public
C) private D) volatile
28、下列整型的最终属性i 的定义中,正确的是(C )
A) final i; B) static int i;
C) static final int i=234; D) final float i=3.14f;
三、程序阅读题
1、阅读下面的程序,程序保存为Test.java:
1)public class Test
2){
3)short mValue;
4)public static void main(String[] args)
5){
6)int a = 32;
7)int b = 56;
8)Test os = new Test(a+b);
9)os.Show( );
10)}
11)protected Test(short aValue) { mValue = aValue; }
12)public void Show( ) { System.out.println(mValue); }
13)}
上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?
第8行出错,原因是该类缺少一个具有一个整形形参的构造函数。
2、阅读下面的程序:
1)public class test
2){
3)public static void main(String argv[])
4){
5)Bird b = new Bird();
6) b.Fly(3);
7)}
8)}
9)class Bird
10){
11)static int Type = 2;
12)private void Fly(int an_Type)
13){
14)Type = an_Type;
15)System.out.println("Flying..."+Type);
16)}
17)}
上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?
第六行出错,原因在于一个类中静态方法不能调用实例方法。
3、阅读下面的程序:
1)abstract class Base{
2)abstract public void myfunc();
3)public void another(){
4)System.out.println("Another method");
5)}
6)}
7)public class Abs extends Base{
8)public static void main(String argv[]){
9)Base b = new Abs();
10) b.another();
11)}
12)public void myfunc(){
13)System.out.println("My Func");
14)}
15)public void another(){
16)myfunc();
17)}
18)}
以上程序经编译后,运行结果是什么?
My Func
4、阅读下面的程序:
1)class Super{
2)public int i=0;
3)public Super(){
4)i=1;
5)}
6)}
7)public class Sub extends Super{
8)public Sub(){
9)i=2;
10)}
11)public static void main(String args[]){
12)Sub s=new Sub();
13)System.out.println(s.i);
14)}
15)}
上面的程序经编译后,运行结果是什么?
2