类和对象练习题 下载本文

类和对象

一、选择题

1、下面对方法的作用描述不正确的是:( d d ) A、 使程序结构清晰 B、 功能复用 C、 代码简洁 D、 重复代码 2、方法内定义的变量:( b b )

A 、一定在方法内所有位置可见 B、 可能在方法内的局部位置可见

C、 在方法外可以使用 D、 在方法外可见 3、方法的形参:( a)

A、可以没有 B、至少有一个 C、必须定义多个形参 D、只能是简单变量 4、方法的调用:( c)

A、必须是一条完整的语句 B、只能是一个表达式

C、可能是语句,也可能是表达式 D、必须提供实际参数

5、return 语句:( d d)

A、不能用来返回对象 B、只可以返回数值 C、方法都必须含有 D、一个方法中可以有多个 return 语句 6、void 的含义:( d d)

A、方法体为空 B、方法体没有意义 C、定义方法时必须使用 D、方法没有返回值 7、main()方法的返回类型是:( c c ) A 、boolean B、 int C、 void D、 static 8、方法重载所涉及的方法:( a )

A、有相同的名字 B、参数个数必须不同 C、参数类型必须不同 D、返回类型必须不同 9、下面关于类和对象之间关系的描述,正确的是( c c ) A、联接关系 B、包含关系 C、具体与抽象的关系 D、类是对象的具体化

10、下面关于java中类的说法哪个是不正确的( c ) A、类体中只能有变量定义和成员方法的定义,不能有其他语句。

B、构造方法是类中的特殊方法。

C、类一定要声明为public的,才可以执行。

D、一个java文件中可以有多个class定义。 11、下列哪个类声明是正确的( d) A、 public void H1{?} B 、public class Move(){?}

C、 public class void number{} D、 public class Car{?}

12、下面的方法声明中,哪个是正确的( c c)

A、 public class methodName(){} B、 public void int methodName(){}

C、 public void methodName(){} D、public void methodName{}

13、下述哪些说法是不正确的?( b )

A、 实例变量是类的成员变量 B、 实例变量是用static关键字声明的

C、 方法变量在方法执行时创建 D、方法变量在使用之前必须初始化

14、下面对构造方法的描述不正确是( b b )。

A、 系统提供默认的构造方法 B、 构造方法可以有参数,所以也可以有返回值

C、 构造方法可以重载 D、 构造方法可以设置参数

15、定义类头时,不可能用到的关键字是( bb b)。 A、 class B、private C、extends D、public

16、下列类头定义中,错误的是( a )。 A、public x extends y {...} B、 public class x extends y {...} C、class x extends y implements y1 {...} D、class x {...} 17、设 A为已定义的类名,下列声明A类的对象a的语句中正确的是 ( d ) 。

A、 float A a; B、 public A a=A( ); C、 A a=new int( ); D、static A a=new A( );

18、设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是 ( a )。

A、 void X(int k ){ i=k; } B、 X(int k ){ i=k; } C、X(int m, int n ){ i=m; j=n; } D、X( ){i=0;j=0; } 19、有一个类A,以下为其构造方法的声明,其中正确的是

( b )。 A、void A(int x){...} B、 public A(int x){...}

C、public a(int x){...} D、static A(int x){...}

20、下列方法定义中,不正确的是( c )。

A、 float x( int a,int b ) { return (a-b); } B、 int x( int a,int b) { return a-b; }

C、 int x( int a,int b ); { return a*b; } D、 int x(int a,int b) { return 1.2*(a+b); }

21、设i , j为类X中定义的double型变量名,下列X类的构造方法中不正确的是( a )。

A、double X(double k ){ i=k; return i; } B、 X( ){i=6;j=8; }

C、 X(double m, double n ){ i=m; j=n; } D、X(double k ){ i=k; }

22、设 ClassA为已定义的类名,下列声明Class A类的对象ca的语句中正确的是( a )。 A、public ClassA ca=new ClassA( ); B、 public ClassA ca=ClassA( );

C、 ClassA ca=new class( ); D、 ca ClassA; 23、设m , n为类A中定义的int型变量名,下列A类的构造方法中不正确的是( a )。 A、 void A(int k ){ m=k; } B、A(int k ){ m=k; } C、 A(int m, int n ){m=i; n=j; } D、 A( ){m=0;n=0; }

24、设i、j、k为类School中定义的int型变量名,下列类School的构造方法中不正确的是( b )。 A、 School ( int m){ ... } B、 void School ( int m){ ... }

C、School ( int m, int n){ ... } D、School ( int h,int m,int n){ ... }

25、下列选项中,哪个是java语言所有类的父类( c ) A、String B、 Vector C、 Object D、KeyEvent

26、Java中所有的类都是通过直接或间接地继承( a )类得到的。( ) A、 java.lang.Object B、 java.lang.Class C、 任意类 D、

以上答案都不对

27、对于任意一个类,用户所能定义的构造方法的个数至多为( d )。

A、0个 B、1个 C、2个 D、任意个 28、构造方法何时被调用( b ) A、类定义时 B、创建对象时 C、调用对象方法时 D、使用对象的变量时 29、类Test1定义如下 public class Test1{

public float aMethod(float a,float b){ } ( b ) }

将以下哪种方法插入( )是不合法的。( ) A、 public float aMethod(float a, float b,float c){ } B、 public float aMethod(float c,float d){ } C、 public int aMethod(int a, int b){ } D、public int aMethod(int a,int b,int c){ }

30、用来导入已定义好的类或包的语句是( b )

A、main B、import C、public class D、class 31、类是具有相同( a )的集合,是对对象的抽象描述。( )

A、 属性和方法 B、 变量和方法 C、变量和数据 D、 对象和属性

32、一个对象的生命周期分( c )3个阶段。( ) A、使用、生成和清除 B、清除、使用和生成 C、生成、使用和清除 D、生成、清除和使用 33、以下(a )是专门用于创建对象的关键字。( ) A、new B、double C、class D、int 34、表达式( c)将返回当前的系统时间和日期 ( ) A、 DataFormat.getDataTime B 、 new Data C 、DataFormat.getDataTimeInstance() D、 new CurrentData 35、()为程序员提供了一些可完成通用任务的现有类 ( A) A、 Java类库 B 、preExisting C、 java 代码 D 、library关键字

36、程序员通常会使用( C )

A 、程序员定义的方法 B 、现有的方法

C 、程序员定义的得带以及现有的方法 D 、既不是程序员定义的方法也不是现有的方法

37、利用方法中的() 语句可为调用方法返回一个值( A )

A、return B 、back C、end D 、以上答案都不对 38、( A)方法用做返回两个参数中的较大值( ) A 、max B 、maximum C、 larger D、 greater 39、( D )将被传送至一个被调用的方法( ) A、 返回值 B、 返回类型 C、 参数表 D、 参数列表

40、方法的参数可以是( D )

A、 常量 B、表达式 C、 变量 D 、以上答案都对 41、()是位于方法头中的一个以逗号分隔的声明列表( B )

A、参数表 B、参数列表 C、值表 D、变量表

42、方法的定义是由( )组成的( D ) A、 一个方法 B 、一个方法体 C 、一对花括号 D 、 以上答案都对

43、一个( D)对象将包括int型数据( ) A、 IntegerObject B、Int C、IntData D、Integer

44、在方法调用过程中。位于方法名之后圆括号的变量被称为( B )

A、 变元 B 、参数 C 、语句 D 、声明 45、一条return语句将给调用程序返回(D)个值( ) A 、0 B、 1 C、 任意数量 D、A和B 46、方法的第一行被称为方法的( D )

A 、方法体 B、 标题 C、 调用者 D、 方法头 47、实例变量的作用域整个的( C )

A、 语句块 B 、 方法 C 、类 D 、 以上答案都不对

48、在某个方法内部定义的变量被称为( B )

A 、实例变量 B、局部变量 C、 类变量 D、 隐藏变量 49、在一个类的内部声明,但又处于该类方法外部的变量被称为( C )

A、 局部变量 B、 隐藏变量 C、 实例变量 D、常量 50、从定义局部变量语句的外部访问该局部变量,会导致()出现 ( A )

A、 逻辑出错 B 、 编译错误 C、 运行错误 D 、 以上答案都不对

51、实例变量( D )

A 、 是在一个类的内部声明的变量 B 、 的作用域为整个类

C 、 可被同一类中的任何方法所访问 D 、 以上答案都对

52、当方法内传递一个参数时,将该参数值的一个拷贝传递给方法的传递方式称为( B )

A、调用传递 B、 值传递 C、 引用传递 D 、方法传递

53、当一个变量在应用程序的整个生命周期中被使用,且整个过程中的其他值也不能被改变时,那么将他声明为一个( B )

A 、局部变量 B、常量 C、实例变量 D、以上答案都不对

54、关键字()表示一个类定义的开始( C )

A、 declare B、new C、 class D、以上答案都不对

55、类的定义必须包含在一对()内( B )

A、方括号 B、花括号 C、逗号 D、圆括号 56、实例变量的初始化( B )

A 、是在他们声明时完成 B 、 将被设置为默认值 C 、是在一个构造方法中完成的 D 、以上答案都对 57、某个方法,在保证参数值有效性的前提下设置其实例变量number,该方法的方法名最好取( C )

A、number B、 set C、setNumber D、 setValue

58、某个方法,在保证参数值有效性的前提下获取其实例变量number,该方法的方法名最好取( C ) A、number B、 get C、getNumber D、 getValue

59、通过使用关键字()创建对象( D ) A、 object B 、instantiate C、create D、 new

60、参照以下Java代码,以下四个叙述中最确切的是( C ) class A{

int x; static int y;

void fac(String s){System. out. println("字符串:"+s);} }

A、x、y和s都是成员变量 B、x是实例变量、y是类变量、s是局部变量

C、x和y是实例变量、s是参数 D、x、y和s都是实例变量

61、下列关于变量作用域的描述中,不正确的一项是 ( C )

A、变量属性是用来描述变量作用域的

B、局部变量作用域只能是它做在的方法代码段内 C、类变量能在类的方法中声明 D、类变量的作用域是整个类

62、下列关于变量作用域的说法中,正确的一项是 ( B )

A、方法参数的作用域是方法外部代码段 B、异常处理参数的作用域是方法外部代码段 C、局部变量的作用域是整个类

D、类变量的作用域是类的某个方法 63、System类在哪个包中?( D )

A 、java.util B 、java.io C 、java.awt D 、java.lang

64、给出下面代码段 1) public class Test { 2) int m, n;

3) public Test() {}

4) public Test(int a) { m=a; }

5) public static void main(String arg[]) { 6) Test t1,t2; 7) int j,k; 8) j=0; k=0;

9) t1=new Test(); 10) t2=new Test(j,k); 11) } 12) }

哪行将引起一个编译时错误? ( D ) A 、line 3 B、 line 5 C、 line 6 D、 line 10

65、对于下列代码、 1) class Person {

2) public void printValue(int i, int j) {//... } 3) public void printValue(int i){//... } 4) }

5) public class Teacher extends Person { 6) public void printValue() {//... } 7) public void printValue(int i) {//...} 8) public static void main(String args[]){ 9) Person t = new Teacher(); 10) t.printValue(10); 11) }

第10行语句将调用哪行语句?( )

A 、line 2 B、 line 3 C 、line 6 D、 line 7

66、下列关于构造方法的说话正确的是( B ) A、 类中的构造方法不可省

B、 构造方法必须与类同名,但方法不能与class同名 C 、 类的构造方法在一个对象被创建时自动执行 D、 一个类只能定义一个构造方法

67、下列语句中,对构造方法的描述错误的是( D ) A、构造方法的名称必须和类名相同

B、构造方法没有返回值,返回类型也不能用void C、构造方法在一个类中可以多次出现

D、当重写了带参数的构造方法,系统默认的不带参数的构造方法依然存在

68、下面关于java中类的说法哪个是不正确的( A ) A、类体中只能有变量定义和成员方法的定义,不能有其他语句

B、构造方法是类中的特殊方法

C、类一定要声明为public 的,才可以执行 D、一个java文件中可以有多个class定义

69、下列哪个 不是 面向对象的三大特性之一( D )

A、 封装性 B、 继承性 C、多态性 D、重载

70、下面哪种语言 不是 面向对象语言 ? ( C )

A、 java B、 C++ C 、 C D、 Smalltalk

71、在创建对象时 必须( D ) A、先声明对象,然后才能使用对象

B、先声明对象,为对象分配内存空间,然后才能使用对象 C、先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象 D、上述说法都对

72、以下叙述不正确的是( D )

A、面向对象方法追求的目标是、尽可能地运用人类自然的思维方式来建立问题空间的模型,构造尽可能直观、自然的表达求解方法的软件系统。

B、面向对象方法的优点有、易于维护,可重用性好,易于理解、扩充和修改。

C、面向对象=对象+分类+继承+消息通信。

D、面向对象的基本特征是封装性、继承性和并行性。 73、对于构造函数,下列叙述不正确的是( B )。 A、构造函数是类的一种特殊函数,它的方法名必须与类名相同。

B、构造函数的返回类型只能是void型。

C、构造函数的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造函数。 二、填空题

1、通常用关键字 NEW 来新建对象,通过类创建对象的基本格式为: 类名 对象名 =new 构造方法(); 。

2、通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现 Myclass obj=new Myclass(); 。

3、面向对象程序设计的主要特点是 继承 、 多态 和 封装 。

4、构造方法是类中的一种特殊方法,它用来定义对象的 初始化 。

5、在Java程序中定义的类中包括有两种成员,分别是: 成员变量 、 成员方法 。

6、用static修饰的方法,称为静态方法。它们不是对象的方

法,而是整个类的方法。静态方法只能处理用关键字 修饰的数据。

7、列举三个常用类库的包、 java.util

、java.io 和 java.awt 。 8、Java中所有类都是类 Object 的子类。

9、Java中类成员的限定词有以下几种:private、 public、 friendly、protected其中, public 的限定的范围最大。 10、被关键字 final /private 修饰的方法是不能被当前类的子类重新定义的方法。

11、JAVA程序的基本元素是 类 。

12、 class 是JAVA语言中定义类时必须使用的关键字。

13、定义在类中方法之外的变量称为 成员变量 。 14、方法声明包括 方法头 和 方法体 两部分。 15、方法头确定方法的 方法名 ,形式参数的名字和 类型 、 返回值 的类型和绯闻限制。

16、 方法体 由包括在花括号内的声明部分和语句部分组成,描述方法的功能。

17、类头定义的基本格式要求为__修饰符__ _、__class关键字_ __、_____ 类名 __和__ 花括号 __。 18、 对象 是指Java程序通过规则引擎调用此规则包时,将数据存储在Java的类中,以对象的形式传入。 19、在Java类对象的 编辑窗口 中直接输入需要导入的类的完成类名。 20、 类 是Java的核心内容,是用来创建对象的模板。 21、类有两种基本成员是 方法 和 成员变量 。

22、 一个Java源文件就是由若干个 类 构成的。 23、 类 是抽象,而 对象 是具体。

24、.对象的创建、创建对象的过程就是 类的实例化 的过程

25、 对象的创建的步骤 对象的声明 、 及 对象的实例化 。

26、 使用new运算符实例化一个已经声明的 类 27、实例化一个对象时,会同时调用类的构造方法对它进行 。

28、 类的 是特殊的类方法,它必须和类同名,并且不能有返回类型,也不能用void来标注。

29、 构造方法是具有特殊地位的方法, 不可以调用构造方法。

30、一个类中可以有多个

31、类里面如果没有 ,系统会调用默认的构造方法,默认的构造方法是不带任何参数的。 32、包主要来解决 的问题。

33、 既是命名机制,又是可见度控制机制。

34、java语言的属性与方法的引用均使用__ _运算符。

35、定义类时通常使用关键字____ , , ___。

36、写出成员变量的定义格式__ _______。

37、对象的生命周期包括三个阶段 、 、 。

38、Java中类成员的访问控制符有以下几种、private, public,__ ___, __ ____。其中,__ ______的限定的范围最大。

39、Java中所有类都是类__ _的子类。Applet类是系统类_ __类的子类,存在于_ ___包中。

40、按作用域分类,变量有局部变量、__ _____、方法变量和异常处理参数。

41、JAVA语言通过接口支持_____ ____继承,使类继承具有更灵活的扩展性。

42、JAVA语言中___ ___类是所有类的根。 三、程序填空

1、请写出下面程序的运行结果。 package com.gem.j2SE03; abstract class A { private int x = 100; public A(){ this.print(); }

public abstract void print(); }

class B extends A { private int x = 200; public B(int x){ this.x = x; }

public void print(){

System.out.println(\ } }

public class TestJava { private void mian() { A a = new B(20); } }

程序运行结果为:

2、请写出下面程序的运行结果。 public class Test extends TT{ public void main(String args[]){ Test t = new Test(\ }

public Test(String s){ super(s);

System.out.println(\ }

public Test(){ this(\ } }

class TT{ public TT(){

System.out.println(\ }

public TT(String s){ this();

System.out.println(\ } }

程序运行结果为:

3、阅读下列程序,写出程序运行的结果: public class Test {

public static void main (String[] args) {

String s1=new String(\ String s2=\ String s3=\

System.out.println(s1==s2);

System.out.println(s1.equals(s2)); System.out.println(s2==s3);

System.out.println(s2.equals(s3)); String s4=s1;

System.out.println(s1==s4);

System.out.println(s1.equals(s4)); } }

程序运行结果为:

4、public class Test {

private static void printArray(int[] arr) { for(int i=0;i< arr.length;i++) System.out.print(arr[i]+\ System.out.println(\ }

private static void changeValue(int value) { value*=2; }

private static void changeValue(int[] arr) { for(int i=0;i

public static void main (String[] args) { int[] arr={1,2,3,4,5}; changeValue(arr[0]); printArray(arr); changeValue(arr); printArray(arr); } }

程序运行结果为:

5、class MyException extends Exception { public MyException(String message) { super(message); } }

public class Test {

private static void fun1() throws MyException {

throw new MyException(\in fun1().\ }

private static void fun2() throws MyException { try { fun1(); }

catch(NullPointerException ex) { System.out.println(\、\ }

finally {

System.out.println(\ } }

public static void main (String[] args) { try {

fun2(); }

catch(MyException ex) {

System.out.println(\); }

catch(Exception ex) {

System.out.println(\ } } }

程序运行结果为:

6、下面是一个类的定义,请完成程序填空。 public class ___ _______ {

int x, y;

Myclass ( int , int ) // 构造方法 {

x=i; y=j; } }

程序运行结果为:

7、 下面是一个类的定义,请将其补充完整。 class ___ __ { String name; int age;

Student( ___ __ s, int i) { name=s; age=i; } }

程序运行结果为:

8、下面程序的功能是通过调用方法max()求给定的三个数的最大值,请将其补充完整。 public class Class1{

public static void main( String args[] ){ int i1=1234,i2=456,i3=-987;

System.out.println(\三个数的最大值、\ ); }

public static int max(int x,int y,int z) { int temp1,max_value; temp1=x>y?x:y;

max_value=temp1>z?temp1:z; return max_value; } }

程序运行结果为:

9、写出下列程序的输出结果 public class Test{

public static void main(String[] args){ Count myCount = new Count(); int times = 0;

for(int i=0;i<100;i++)

increment(myCount , times);

System.out.println(“count is” + myCount.count); System.out.println(“time is”+ times); }

public static void increment(Count c , int times){ c.count++; times++; } }

class Count{

public int count; Count(int c){ count =c; }

Count(){ count =1; } }

程序运行结果为:

10、阅读下列程序,写出程序运行的结果: class Circle { double radius;

public Circle(double r){ this.radius=r; } }

public class Test{

public static void main(String[] args){ Circle circle1 = new Circle(1); Circle circle2 = new Circle(2);

System.out.println(\swap:circle1 =\ swap(circle1,circle2); System.out.println(\swap:circle1 = \ }

public static void swap(Circle x , Circle y){

System.out.println(\swap: x = \ y = \

Circle temp = x; x = y; y = temp;

System.out.println(\ x = \= \ } }

程序运行结果为:

11、下列程序的输出结果是什么? public class Foo{ static int i=0; static int j=0;

public static void main(String[] args){ int i=2; int k=3; int j=3;

System.out.println(“i + j is ”+ i + j); k = i +j;

System.out.println(“k is ”+k); System.out.println(“j is ”+ j); } }

程序运行结果为:

12、运行类C的输出结果是什么? class A{

public A(){

System.out.println(\default constructor of A y is

invoked\} }

class B extends A{ public B(){

System.out.println(\default constructor of B is invoked\ } }

public class C{

public static void main(String[] args){ B b = new B(); } }

程序运行结果为:

13、阅读下列程序写出输出结果: class A{

String s=\ void show(){

System.out.println(s); } }

class B extends A{

String s=\

void show() {

System.out.println(s); } }

public class TypeConvert{

public static void main(String args[]){ B b1;

B b2=new B();

A a1,a2; a1=(A)b2; a2=b2;

System.out.println(a1.s); a1.show();

System.out.println(a2.s); a2.show(); b1=(B)a1;

System.out.println(b1.s); b1.show();

System.out.println(b2.s); b2.show(); } }

程序运行结果为:

14、阅读下列程序,写出程序运行的结果: class A { int i, j;

public A(){ this.i=0; this.j=0; }

public void print(){ System.out.println (\}

class B extends A{ int m;

public B (int i, int j, int m){ super (); this.m=m; }

public void print (){System.out.println (\ m=\}

public class C{

public static void main(String args[]){ A a=new A();

B b=new B(1, 2, 3); a.print (); b.print (); } }}

程序运行结果为:

15、阅读下列程序,写出程序运行的结果: class Demo { public void test ()

{System.out.println (\public void test (int i) {System.out.println (i);} public void test (int a, int b) {System.out.println (a+b);} }

public class Test {

public static void main(String args[]){ Demo de=new Demo(); de.test(); de.test(5); de.test(6,8); } }

程序运行结果为:

16、阅读下列程序,写出程序运行的结果: class Cube{ int width; int height; int depth;

Cube(int x,int y,int z){ this.width=x; this.height=y; this.depth=z; }

public int vol(){

return width*height*depth;}} public class UseCube {

public static void main(String[] args) { Cube a=new Cube(3,4,5);

System.out.println(\长度=\ System.out.println(\体积=\ } }

程序运行结果为:

17、阅读下列程序,写出程序运行的结果: class SuperClass{ int x=10; int y=20;

public void show(){

System.out.println(\我是父类的成员方法!\}

class SubClass extends SuperClass{ int z=30; }

public class JC {

public static void main(String[] args) { SuperClass father=new SuperClass(); SubClass child=new SubClass();

System.out.println(\父类SuperClass成员变量、\

System.out.println(\子类SubClass成员变量、\ } }

程序运行结果为:

18、阅读下列程序,写出程序运行的结果: public class Class431 {

public static void main(String[] args) { int a = 3; char m='a';

prt(\ prt(\

prt(\ prt(\ }

static float test1(char x, int y) { int z = x+y; return z; }

static float test2() { int a = 60;

for (int i = 8; i < 12; i++) a= a+i;

prt(\ return a; }

static void prt(String s) { System.out.println(s); } }

程序运行结果为:

19、阅读下列程序,写出程序运行的结果: public class Class432 { static int i=123;

public static void main (String[] args) { int i=456;

System.out.println(\中的 i=\ m1( ); m2( ); }

static void m1( ) { int i=789;

System.out.println(\中的 i=\ }

static void m2( ) {

System.out.println(\类变量 i=\ i+=6;

System.out.println(\加 6 后的类变量 i=\ } }

程序运行结果为:

20、下面程序的结果是什么? class Tester { int var;

Tester(double var) {

this.var = (int)var; }

Tester(int var) { this(\ }

Tester(String s) { this();

System.out.println(s); }

Tester(){

System.out.println(\ }

public static void main(String[] args) Tester t = new Tester(5); } }

程序运行结果为:

21、以下代码的运行结果是 class Base{ int i; Base(){ add(1);

System.out.println(i); }

void add(int v){ i+=v;

System.out.println(i); }

void print(){

System.out.println(i); } }

class MyBase extends Base{ MyBase(){ add(2); }

{ void add(int v){ i+=v*2;

System.out.println(i); } }

public class TestClu {

public static void main(String[] args) { go(new MyBase()); //System.out.println(); }

static void go(Base b){ b.add(8); //b.print(); } }

程序运行结果为:

22、以下代码的输出结果是下列哪个选项? class Base{Base(){

System.out.println(\ } }

public class Checket extends Base{ Checket(){

System.out.println(\ super(); }

public static void main(String argv[]){ Checket c = new Checket(); // super(); } }

程序运行结果为:

23、给定下面的代码,哪个选项在替代\后可以被编译并且改变变量oak的值?

class Base{

static int oak=99; }

public class Doverdale extends Base{

public static void main(String argv[]){ Doverdale d = new Doverdale(); d.amethod(); }

public void amethod(){ //Here } }

程序运行结果为:

四、问答题

1、什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单重继承?什么是多重继承? 2、什么是类成员,什么是实例成员?他们之间有什么区别? 3、抽象类和接口有什么区别? 4、类与对象的关系是什么? 5、Java的访问限定修饰符有几种,各自的访问权限是什么? 6、谈谈final, finally, finalize的区别。 7、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 8、abstract class和interface有什么区别? 五、判断题

1、类体中private修饰的变量在本类中能访问,类生成的对象也能访问。( )

2、一个类中,只能拥有一个构造器方法。( ) 3、抽象类中不可以有非抽象的方法。 ( )

4、如果将一个对象强制类型转换为一个不兼容的类型,将引发NullPointerException 异常。 ( )

5、Java中Object类是最顶层的类。 ( )

6 程序在编译通过以后,仍然可能出现运行时错误和逻辑错误。 ( )

7 可以通过javac来运行一个Java Application。 ( ) 8 可以在子类构造函数中通过this关键字调用基类的构造函数。 ( )

9 Java语言是IBM公司设计的一种面向对象程序设计语言。( )

10 一个Unicode字符占4个字节。 ( ) 11 在循环语句中,使用continue;语句可以跳出循环。 ( ) 12 在Java Application中如果没有定义main()方法,则程序不能编译。 ( )

13、Java 语言的模块只有类。( ) 14、定义方法时方法名可以是任何标识符。( ) 15、方法体中至少有一条 return 语句。( ) 16、如果需要可以在方法中再声明一个方法。( )

17、方法定义语句 void x( int a,int b ) { return (a-b); }是正确的。( )

18、方法内定义的变量是可以在方法外使用的。( ) 19、只有直接调用自身的方法才叫递归方法。( )

20、Java 中允许两方法同名,只要它们参数的类型或个数不同就行。( )

21、每个应用程序都必须要有 main 方法。 ( ) 22、方法定义语句 float x( int a,int b ) { return (a-b); }是正确的。( )

23、对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。( ) 24、有的类定义时可以不定义构造方法,所以构造方法不是必需的。( ) 25、类及其属性、方法可以同时有一个以上的修饰符来修饰。( ) 六、编程题 1、学生有姓名(name)和成绩(score)信息。成绩有科目(course)和分数(grade)信息。学生类的getResult方法显示输出成绩信息,setData方法实现初始化学生信息。编写学生类(Student)和成绩类(Score),并测试。

2、 定义一个学生类,包含三个属性(学号,姓名,成绩)均为私有的,分别给这三个属性定义两个方法,一个设置它的值,另一个获得它的值。然后在一个测试类里试着调用。 3、编写程序,模拟银行账户功能。要求如下、

属性、账号、储户姓名、地址、存款余额、最小余额。方法、

存款、取款、查询。根据用户操作显示储户相关信息。如存款操作后,显示储户原有余额、今日存款数额及最终存款余额;取款时,若最后余额小于最小余额,拒绝收款,并显示“至少保留余额XXX”

4、编程实现、以电话Phone为父类(例、电话有本机号码、打电话、接电话等属性和功能,当然还有一些其它的特性),移动电话Mobilephone和固定电话Fixedphone为两个子类,并使移动电话实现接口、可移动Moveable。固定电话又有子类、无绳电话Cordlessphone。设计并定义这几个类,明确它们的继承关系,定义子类时给出子类有别于父类的新特性。 5、声明测试类、声明Phone类的数组(含5个元素),生成五个对象存入数组、其中二个Phone类的对象、一个Mobilephone类的对象、一个Fixedphone类的对象和一个Cordlessphone类的对象,打印输出每个对象的某个成员变量。将一个父类的引用指向一个子类对象,用这个塑型后的对象来调用某个方法实现多态性。

6、设计一个动物类,它包含动物的基本属性。例如名称、大小、重量等,并设计相应的动作,例如跑、跳、走等。 7、设计一个长方形类,成员变量包括长和宽。类中有计算面积和周长的方法,并有相应的set方法和get方法设置和获得长和宽。编写测试类测试是否达到预定功能。要求使用自定义的包。

8、创建一个People类,定义成员变量如编号、姓名、性别、年龄;定义成员方法“获得编号”、“获得姓名”、“获得年龄”等,再创建People类的对象。

9、设计Point类用来定义平面上的一个点,用构造函数传递坐标位置。编写测试类,在该类中实现Point类的对象。 10、编写程序说明静态成员和实例成员的区别。

11.设计雇员Employee类,记录雇员的情况,包括姓名、年薪、受雇时间,要求定义MyDate类作为受雇时间,其中包括工作的年、月、日,并用相应的方法对Employee类进行设置。编写测试类测试Employee类。要求使用自己的包。 12、编写一个学生的类,要求有姓名、年龄、兴趣、班级编号和一个教员类,要求有姓名、教授课程、专业方向、教龄,设计一个主方法,要求在主方法中调用这两个类。

13、.声明Patient类表示在门诊中的病人,此类对象应包括name(a string),sex(a char),age(an integer),weight(a float),allergies(a boolean).声明存取及修改方法.在一个单独的

类中,声明测试方法,并生成两个patient对象,设置其状态并将信息显示在屏幕上。 14、声明并测试一个负数类,其方法包括toString()及负数的加,减,乘运算。

15、定义一Student类:包括姓名的属性值,Statics类:

16、定义一个类,成员变量是String数组s,成员方法有s的setter和getter,显示s中使用字符串元素的方法。

17、 构造一个类来描述屏幕上的一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括、取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。 18、用两个方法打印出 200 以内的全部素数(一个是 main()方法,一个是专门判定一个数是 否为素数的方法)。 19、已知菲波那契数列的数学表达式为: fibonacci(n)=n, n=0,1;

fibonacci(n)=fibonacci(n-1)+fibonacci(n-2), n≥2;

用递归方法计算 Fibonacci序列,并打印出其前 15项的值。 20、编写一个 Application,其中包含三个同名方法 mySqrt(),它们都只有一个参数,参数的 类型分别为 int 型、float 型和 double 型,它们的功能均为返回参数的平方根,返回值的类 型与参数的类型相同。在方法 main( ) 中调用上面的三个方法并输出结果。 21、编程生产 100 个 1到 6 之间的随机数,统计 1到 6 每个数出现的概率。