一、 选择 1、有关类Demo,哪句描述是正确的? public class Demo extends Base{ private int count; public Demo(){ System.out.println("A Demo object has been created"); } protected void addOne() {count++; } }
A 当创建一个Demo类的实例对象时,count的值为0。
B 当创建一个Demo类的实例对象时,count的值是不确定的。
C 超类对象中可以包含改变count 值的方法。
D Demo的子类对象可以访问count。 2、当编译和运行下列程序段时,会发生什么? class Base {} class Sub extends Base {} class Sub2 extends Base {} public class CEx{ public static void main(String argv[]){ Base b = new Base(); Sub s = (Sub) b; } }
A 通过编译和并正常运行。
B 编译时出现例外。
C 编译通过,运行时出现例外。 3、如果任何包中的子类都能访问超类中的成员,那么应使用哪个限定词?
A public
B private
C protected
D transient 4、下面的哪个选项是正确的? class ExSuper{ String name; String nick_name; public ExSuper(String s,String t){ name = s; nick_name = t; } public String toString(){ return name; } } public class Example extends ExSuper{ public Example(String s,String t){ super(s,t); } public String toString(){ return name +"a.k.a"+nick_name; } public static void main(String args[]){ ExSuper a = new ExSuper("First","1st"); ExSuper b = new Example("Second","2nd"); System.out.println("a is"+a.toString()); System.out.println("b is"+b.toString()); } }
A 编译时会出现例外。
B 运行结果为: a is First b is second
C 运行结果为: a is First b is Secong a.k.a 2nd
D 运行结果为: a is First a.k.a 1nd b is Second a.k.a 2nd 5、运行下列程序的结果是哪个? abstract class MineBase { abstract void amethod(); static int i; }
public class Mine extends MineBase { public static void main(String argv[]){ int[] ar = new int[5]; for(i = 0;i < ar.length;i++) System.out.println(ar[i]); } }
A 打印5个0。
B 编译出错,数组ar[]必须初始化。
C 编译出错, Mine应声明为abstract。
D 出现IndexOutOfBoundes的例外。
二、多项选择 1、下面哪个语句是正确的?
A Object o = new Button("A");
B Button b=new Object("B");
C Panel p = new Frame();
D Frame f = new Panel(); E Panel p = new Panel(); 2、指出下列程序的所有错误? final class First { private int a = 1; int b = 2; }
class Second extends First { public void method() { System.out.println(a + b); } }
A println()参数应为字符串,因此此处不能调用该方法。
B 因为变量a 是private ,所以在其他类中不能访问a。
C Second 不能继承First。
D 关键字final不能修饰类。 3、接口A的定义如下,指出下列哪些类实现了该接口? interface A { int method1(int i); int method2(int j); }
A class B implements A { int method1() { } int method2() { } }
B class B { int method1(int i) { } int method2(int j) { } }
C class B implements A { int method1(int i) { } int method2(int j) { } }
D class B extends A { int method1(int i) { } int method2(int j) { } } E class B implements A { int method2(int j) { } int method1(int i) { } }
三、 编程题 1、 为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。现有两种工具:Car007 和Plane,其中Car007 的速度运算公式为:A*B/C,Plane 的速度运算公式为:A+B+C。需要编写三类:ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序。其运行过程如下,从命令行输入ComputeTime的四个参数,第一个是交通工具的类型,第二、三、四个参数分别时整数A、B、C,举例如下: 计算Plane的时间:"java ComputeTime Plane 20 30 40" 计算Car007的时间:"java ComputeTime Car007 23 34 45" 如果第3种交通工具为Ship,则只需要编写Ship.java,运行时输入:"java ComputeTime Ship 22 33 44" 提示:充分利用接口的概念,接口对象充当参数。 实例化一个对象的另外一种办法:Class.forName(str).newInstance();例如需要实例化一个Plane对象的话,则只要调用Class.forName("Plane").newInstance()便可。