您的位置:首页 > 编程语言 > Java开发

java基础知识点考察

2011-12-02 16:14 274 查看
转载,原文来自:http://feelingsea.blog.hexun.com/7296038_d.html

1、对象“学生”与对象“班级”的关系

(1)继承关系

(2)包含关系

(3)关联关系

(4)派生关系

2、Sun公司对Java语言的宣传口号为“一次编程,到处执行”,体现了Java的什么特性

(1)编程的简单性

(2)与平台无关性

(3)Javar的面向对象特性

(4)Java程序的鲁棒性

3、Java语言中的int及char数据类型的长度分别为

(1)16位和8位

(2)8位和16位

(3)32位和16位

(4)32位和8位

4、java语言是由那家计算机公司发布的

(1)Microsoft 公司

(2)IBM 公司

(3)NEC 公司

(4)Sun 公司

5、java语言是在哪一年正式向计算机界发布的

(1)1985年

(2)1995年

(3)1997年

(4)1990年

6、java语言在语言的类型上应属于那种类型的语言

(1)编译型的语言

(2)解释型的编译语言

(3)脚本型的解释语言

(4)编译链接型的语言

7、java语言在编程方法上及语言的语法规则上与如下那种编程语言最接近

(1)C 语言

(2)C++语言

(3)Basic 语言

(4)Fortran 语言

8、java语言的源程序经编译后所生成的程序类型为

(1).exe 型的可执行程序

(2).obj 型二进制的程序

(3).lib 型二进制的库程序

(4).class 型类代码的程序

9、在MicroSoft Windows操作系统应用平台下,下列那种程序是java程序的解释器

(1)Windows系统的资源管理器

(2)Windows操作系统本身

(3)Windows操作系统应用平台下的IE浏览器

(4)Windows操作系统应用平台下的记事本notepad程序

10、某java程序的类定义如下:

public class MyClass extends BaseClass

{

}

则该java源文件在存盘时的源文件名应为如下那一种

(1)myclass.java

(2)MyClass.java

(3)MYCLASS.java

(4)MyClass.jav

11、下列那种注释方式在java程序中是错误的

(1)/* 注释文字串 */

(2)// 注释文字串

(3)/** 注释文字串 */

(4)Rem 注释文字串

12、下列那种标识符在java程序中是错误的

(1)MyClass_Base12

(2)_MyClass$Base12

(3)$MyClass_12

(4)76MyClass$12

13、下列那种标识符不能作为java程序中的变量名

(1)INT

(2)boolean

(3)character

(4)Java_Float

14、下列那种java语言的数据类型是其基本的数据类型

(1)byte 数据类型

(2)数组 数据类型

(3)类 的数据类型

(4)接口 数据类型

15、下列那种java语言的数据类型是其复合的数据类型

(1)int 数据类型

(2)数组 数据类型

(3)float数据类型

(4)char 数据类型

16、下列各种符号的定义格式,那种在java语言中是正确的常量定义

(1)const int SUM=1;

(2)#define SUM 1

(3)final int SUM =1;

(4)int SUM=1;

17、下列各种符号的定义格式,那种在java语言中是错误的变量定义

(1)int myVal =1;

(2)char $myVal =1;

(3)byte _myVal =1;

(4)float 3.14myVal=1;

18、下列各种符号的定义格式,那种在java语言中是正确的布尔性(boolean)的变量定义

(1)boolean myBOOL =1;

(2)boolean myBOOL =0;

(3)boolean myBOOL =true;

(4)boolean myBOOL =null;

19、下列各种java中的赋值操作语句,那种在java语言中是错误的赋值语句

(1) int A =1;

byte B=(byte)A;

(2) int A =1;

char B=A;

(3) int A =1;

float B=A;

(4) int A=1;

long B=A;

20、设int X=1,则 “X = = 1”表达式之值为

(1)1

(2)false

(3)true

(4)null

21、下列各种java中的条件语句,那种在java语言中是错误的条件格式

(1)if (A >= B)

(2)if( A = = B)

(3)if( A = B)

(4)if((A >B) = =true)

22、下列各种java中的语句,那种在java语言中是错误的语句

(1)break stop;

(2)continue goon;

(3)goto goon;

(4)if(A >B )

{ A=1;

}

23、下列各种java中的函数的定义,那种在java语言中是正确的

(1)void myFun(int X=1)

{

}

(2)void myFun(int & X)

{

}

(3)void myFun(int X )

{

}

(4)void myFun(int * X)

{

}

24、下列各种java中的函数在调用时,那种实现的是传值拷贝调用

(1) void myFun( int X)

{

}

(2) void myFun( Frame Obj)

{

}

(3) void myFun( Point P)

{

}

(4) void myFun( Rectangle R)

{

}

25、下列各种java中的函数在调用时,那种实现的是引用数据调用

(1) void myFun( char X)

{

}

(2) void myFun( byte X)

{

}

(3) void myFun( Circle X)

{

}

(4) void myFun( float X)

{

}

26、下列各种java的字符串操作,那种是错误的

(1)"ABCD" + "EFGH" ;

(2)"ABCD" & "EFGH" ;

(3)"ABCD".concat("EFGH");

(4)String ABCD="EFGH" ;

27、下列各种java中的构造函数定义,那种形式是错误的构造函数定义

(1) class MyClass

{

public MyClass()

{

}

}

(2) class MyClass

{

public MyClass(int X)

{

}

}

(3) class MyClass

{

public int MyClass()

{

}

}

(4) class MyClass

{

public MyClass(int x, int y)

{

}

}

28、借助于java的面向对象的编程特性中的封装机制,可以实现对问题进行如下什么方式的处理

(1)将问题的特征属性与问题的功能方法相组合在一起形成一个类。

(2)将问题的特征属性与问题的功能方法相分离,形成各自的程序。

(3)将问题的特征属性内嵌到问题的功能方法的定义体中。

(4)对具体问题只需给出其功能实现方法,而不必给出其特征属性的定义。

29、借助于java的面向对象的编程特性中的继承与派生机制,可以实现编程方法中如下什么应用

(1)代码组合

(2)代码重用

(3)代码的模块化

(4)代码的独立性

30、借助于java的面向对象的编程特性中的抽象机制,可以实现如下什么编程效果

(1)将具体问题抽象成java语言中的类的成员数据。

(2)将具体问题抽象成java语言中的类的成员函数。

(3)将具体问题抽象成java语言中的类的成员数据和成员函数两部分。

(4)将具体问题抽象成java语言中的类和对象的定义。

31、设有一类定义如下:

class MyClass

{ public MyClass( int X )

{

}

}

如下方式创建对象,哪一种是正确的 ?

(1) MyClass myobj=new MyClass;

(2) MyClass myobj=new MyClass( );_

(3) Myclass myobj= new MyClass(1);

(4) MyClass myobj=new MyClass(1,2);

32、下列各种java类的定义,那种是错误的

(1)class MyBaseClass

{

}

class MyDerived extends MyBaseClass

{

}

(2)abstract class MyBaseClass

{

}

class MyDerived extends MyBaseClass

{

}

(3)public class MyBaseClass

{

}

class MyDerived extends MyBaseClass

{

}

(4)final class MyBaseClass

{

}

class MyDerived extends MyBaseClass

{

}

33、下列各种java类的定义,那种是错误的

(1)class MyBaseClass

{

void myFun()

{

}

}

class MyDerived extends MyBaseClass

{

void myFun()

{

}

}

(2)abstract class MyBaseClass

{

abstract void myFun();

}

class MyDerived extends MyBaseClass

{

void myFun()

{

}

}

(3)public class MyBaseClass

{

public void myFun()

{

}

}

class MyDerived extends MyBaseClass

{

public void myFun()

{

}

}

(4)class MyBaseClass

{

public final void myFun()

{

}

}

class MyDerived extends MyBaseClass

{

public void myFun()

{

}

}

34、下列各种java类的定义,那种是错误的

(1)class MyClass

{

private int Val;

public int getVal()

{ return Val;

}

}

(2)class MyClass

{

private static int Val;

public int getVal()

{ return Val;

}

}

(3)class MyClass

{

private int Val;

public static int getVal()

{ return Val;

}

}

(4)class MyClass

{

private static int Val;

public static int getVal()

{ return Val;

}

}

35、下列各种java类的定义,那种是错误的

(1)class MyClass

{

private int Val;

public int setVal(int Val)

{ this.Val=Val;

}

}

(2)class MyClass

{

private static int Val;

public int setVal(int Val)

{ this.Val=Val;

}

}

(3)class MyClass

{

private int Val;

public static int setVal(int Val)

{ this.Val=Val;

}

}

(4)class MyClass

{

private static int Val;

public static int setVal(int ValData)

{ Val=ValData;

}

}

36、下列各种java类的定义,那种是错误的

(1)class MyClass

{ public synchronized void myFun()

{

wait();

}

}

(2)class MyClass

{ public void myFun()

{

wait();

}

}

(3)class MyClass

{ public synchronized void myFun()

{

notify();

}

}

(4)class MyClass

{ public void myFun()

{

System.out.println(" wait() ");

}

}

37、下列各种java类的定义,那种是错误的

(1)class MyClass

{ public synchronized void myFun()

{

wait();

}

}

(2)class MyClass

{ public void myFun()

{

notify();

}

}

(3)class MyClass

{ public synchronized void myFun()

{

notify();

}

}

(4)class MyClass

{ public void myFun()

{

System.out.println(" notify() ");

}

}

38、如下4种继承与派生的类定义,哪一种是正确的

(1) class base

{

public abstract void myfun();

}

class derived extends base

{

public void myfun()

{

}

}

(2) final class base

{

public void myfun()

{

}

}

class derived extends base

{

public void myfun()

{

}

}

(3) class base

{

public final void myfun()

{

}

}

class Dervived extends base

{

public void myfun()

{

}

}

(4) abstract class base

{

public abstract void myfun();

}

class derived extends base

{

public void myfun()

{

}

}

39、设Derived类为Base类的派生类,则如下各种对象的创建语句,那种是错误的

(1)Base Obj=new Derived();

(2)Derived Obj=new Base();

(3)Base Obj=new Base();

(4)Derived Obj=new Derived();

40、欲获取myclass类中的member成员之值哪种方式正确

class myclass

{

private static int member=1;

public static int getmember()

{

return member ;

}

}

(1)myclass .member ;

(2)new myclass().member ;

(3)myclass .getmember();

(4)myclass().getmember() ;

41、下列各种形式的重载定义哪一种是正确的

(1) int add(int x , int y);

int add(int x , int y, int z);

(2) int add(int a , int b);

int add(int x , int y);

(3) int add(int x,int y);

void add(int a , int b);

(4) int add(int x , int y);

void add(int y , int x);

42、下列各种形式的方法重写,那种形式是错误的

(1) class Base

{

public void fun()

{

}

}

class Derived extends Base

{

public void fun()

{

}

}

(2) class Base

{

public void fun()

{

}

}

class Derived extends Base

{

public void fun( int X)

{

}

}

(3) class Base

{

public void fun()

{

}

}

class Derived extends Base

{

private void fun()

{

}

}

(4) class Base

{

void fun()

{

}

}

class Derived extends Base

{

void fun()

{

}

}

43、下面的接口定义中哪一种是错误的

(1) interface MyInterface

{

public abstract void myfun() ;

int myval=1;

}

(2) interface MyInterface

{

void myfrn( );

public static final int myval=1;

}

(3) interface MyInterface

{

public abstract void myfun();

privat int myval=1;

}

(4)interface MyInterface

{

public abstract void myfrn();

public abstract void myfrn(int x);

public static final int myval=1;

}

44、下列各种java的接口定义,那种是错误的

(1) interface MyInterface

{

int Val=1;

void myFun();

}

(2)interface MyInterface

{

public static final int Val=1;

void myFun();

}

(3)interface MyInterface

{

public static int Val;

void myFun();

}

(4)interface MyInterface

{

public final int Val=1;

void myFun();

}

45、下列各种java的接口定义,那种是错误的

(1) interface MyInterface

{

int Val=1;

void myFun();

}

(2)interface MyInterface

{

public static final int Val=1;

void myFun();

}

(3)interface MyInterface

{

public static int Val=1;

void myFun()

{

}

}

(4)interface MyInterface

{

public final int Val=1;

void myFun();

}

46、给定Point类的定义体

class Point

{

private int x , y ;

public Point (int x , int y)

{

this.x=x;

this.y=y;

}

} 其中的this代表

(1) 类名Point

(2) 父类的对象

(3) Point类的当前对象

(4) this指针

47、下列的派生类定义哪一种是正确的

(1) class myDrived extends Base

{

}

(2) class myDrived :public Base

{

}

(3) class myDrived :extends Base

{

}

(4) class myDrived extends public Base

{

}

48、 欲将C/C++语言中定义的int x=1移植到 Java语言程序中,但仍要求保持为16位数据长度,应选择哪一种声明方式

(1) int x=1;

(2) short int x =1 ;

(3) long int x=1;

(4) byte x=1;

49、设myCircle为Circle类的对象(myCircle=new Circle(10,10,100);),则myCircle instanceof Circle的表达式值为

(1)false

(2)ture

(3)null

(4)0

Java语言基础考试题答案:

1(3)、2(2)、3(3)、4(4)、5(2)、6(2)、7(2)、8(4)、9(3)、10(2)、

11(4)、12(4)、13(2)、14(1)、15(2)、16(3)、17(4)、18(3)、19(2)、20(3)、21(3)、22(3)、23(3)、24(1)、25(3)、26(2)、27(3)、28(1)、

29(2)、30(3)、31(3)、32(4)、33(4)、34(3)、35(3)、36(2)、37(2)、

38(4)、39(2)、40(3)、41(1)、42(3)、43(3)、44(3)、45(3)、46(3)、

47(1)、48(2)、49(2)。

一、单选题

1. 既能作为类的修饰符, 也能作为类成员的修饰符的是( )。

A) public B) extends C) Float D) static

2.下列选项中,用于定义接口的关键字是( )。

A)import B) implements C) interface D) protected

3.下列类的定义中,错误的是( )。

A) class x

{ .... }

B) public x extends y

{ .... }

C) public class x extends y

{ .... }

D) class x extends y implements y1

{ .... }

4.下列选项中,用于在定义类时声明父类名的关键字是( )。

A)return B) interface C) extends D) class

5.设 i,j 为类 x中定义的 double型变量名,下列 x类的构造函数中不正确的是( )。

A) double x(double k ){ i=k; return i; }

B) x(double m, double n ){ i=m; j=n; }

C) x( ){i=0;j=0 }

D) x(double k ){ i=k; }

6.下列方法定义中,不正确的是( )。

A) public int x( ){ ... }

B) public static int x( double y ){ ... }

C) void x( double d ) { ... }

D) public static x( double a ){ ... }

7.能从循环语句的循环体中跳出的语句是( )。

A) for 语句 B) break 语句

C) while 语句 D) continue语句

9. 若有循环:

int x=5,y=20;

do{

y-=x;

x++;

}while(++x<--y);则循环体将被执行( )。

A.0次 B.1次 C.2次 D.3次

8. 定义类头时,不可能用到的关键字是( )。

A) private B)class C)extends D)implements

10.在一个应用程序中有如下定义:int a[]={1,2,3,4,5,6,7,8,9,10};,为了打印输出数组a的最后一个元素,下面正确的代码是( )。

A) System.out.println(a[10]);

B) System.out.println(a[9]);

C) System.out.println(a[a.length]);

D) System.out.println(a(8));

11.若一个类中对某个方法进行了重载,能够区分这些重载方法的手段是 ( )。

A)它们的返回值类型的不同 B)它们的名称的不同

C) 它们的参数表的不同 D) 它们的修饰符不同

12.下面是有关子类继承父类构造函数的描述,其中正确的是( )。

A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。

B) 子类无条件地继承父类不含参数的构造函数。

C) 子类必须通过super关键字调用父类的构造函数。

D) 子类无法继承父类的构造函数。

13.下面说法正确的是( )。

A) final 可修饰类、属性、方法。

B) abstract可修饰类、属性、方法。

C) 定义抽象方法需有方法的返回类型、名称、参数列表和方法体。

D) 用final修饰的变量,在程序中可对这个变量的值进行更改。

14.选择排序的思想是,将数据序列划分为两个子列,一个子列是排好序的,另一个是尚未排序的。现若想将数据序列由小到大排序,则每次放到有序子列尾部位置的元素,应从无序序列中选择( )。

A)最大的 B)最小的 C)任意的 D)头上的

15.若想将数据序列使用插入排序算法由小到大排序,则每次放到有序子列合适位置上的元素,应从无序序列中选择( )。

A) 固定位置的 B)最小的 C)任意的 D)最大的

选择题答案:

1.A 2 C 3B
4.C 5.A

6.D 7.B 8.C
9.A 10.B

11.C 12 C 13.A
14.B 15.A

二、填空题

1:SOCKET编程用到的几个通讯类是:__________,__________,__________,__________。

2:容器类的三种形式是:___________,___________,___________。

3:修饰一个类的关键字有___________________,______________________,_________________

填空题答案

ServerSocket Socket DatagramSocket
DatagramPacket

set
list map

public abstract final

三、编程题

1: 写一个窗口程序,用SWING技术,使用布局,至少有5种组件

2:写一个多线程程序,用两种方式。实行输出随机数。

3:用字节方式实现I/O,对一个文件进行读取

4:写一个通过JDBC—ODBC方式连接数据库的程序

5:用ArrayList实现一个类,可以对数据进行添加,删除,修改,查找

第一部分:选择题(至少有一个正确答案)

1:JAVA技术的三大方向是

A:j2me B:j2ee C:jsp D:j2se

2:path和classpath环境变量的解释,不正确的是

A:path代表向DOS中注册的JAVA命令 B:classpath代表编程中用到的标准类库

C:他们都是路径信息 D:在使用JAVA的环境中必须注册

3:函数参数的传递形式有

A:传值 B:传地址 C:传行参 D:传实参

4:程序的三大基本结构是:

A::顺序结构 B::判断结构 C::循环结构 D::跳转结构

5:for循环和其它循环的比较,正确的是

A:for循环先给循环变量赋值,判断,操作,改变循环变量

B:while循环后判断 C:do…while循环先判断 D:for循环最后改变循环变量

6:下列说法正确的是

A:类是一个抽象的东西,和现实生活中的概念相联系 B:对象是和现实生活中的实体相联系

C:没有类就没有对象 D:JDK就是标准类

7:下列说法正确的是:

A:继承就是子类继承父类
B:继承代表父类的东西可以在子类使用

C:JAVA支持多继承 D:JAVA可以继承多个接口

8:JAVA的文件编程,正确的是:

A:可以使用基于二进制的处理 B:可以使用基于字节的处理 C:可以使用基于对象的处理

D:可以使用基于文件位置的处理

9:关于线程的说法,正确的是:

A:线程不会自动开启 B:Runnable可以独立实现线程 C:线程是相对于进程的

D:线程使用降低计算机的效率

10:一下内容属于线程通讯的函数有:

A:wait B:notify C:sleep D:start

11:AWT技术的描述正确的是:

A:JAVA下的窗口技术 B:体现了容器与组件的关系 C:控件不能独立显示

D:控件是标准的JAVA类

12:JAVA下的打包命令是

A:JAVAC
B:JAVA C:JAR D:JAVADOC

13:网络编程的描述正确的是

A:也就是SOCKET编程 B:也是套接字编程 C:客户机要监听

D:服务器要向客户机连接

14:在TCP编程中,发送消息的类是

A:PrintWriter
B:BufferedReader C:Socket

D:ServerSocket

15:在UDP编程中,用到的类是

A:Socket
B:ServerSocket C:DatagramSocket

D:DatagramPacket

16:JAVA事件编程的描述正确的是:

A:可以通过Frame类处理事件 B:可以通过接口处理事件

C:可以通过适配器类处理事件 D:可以通过I/O处理事件

17:时钟的涵义是:

A:在固定的事件内做一个操作
B:其本质原理是多线程技术

C:Timer可以独立实现 D:ActionListener可以独立实现

18:可视化的BEAN正确的是

A:控件技术开发 B:有限制属性 C:有关联属性

D:不可以做事件

19:JDBC是:

A:数据库编程接口 B:可以连接ODBC C:不可以直接连接数据库

D:JAVA数据库编程必须使用JDBC

20:ResultSet代表:

A:记录集 B:和表中的记录相对应 C:可以上下移动

D:可以取出表中的内容

选择题答案

1:ABD

2:D

3:AB

4:ABC

5:AD

6:ABCD

7:ABD

8:ABCD

9:AC

10:ABC

11:ABCD

12:C

13:AB

14:A

15:C

16:ABC

17:AB

18:ABC

19:ABD

20:ABCD

第二部分:填空题

1、可以执行SQL语句的三个类是____________,____________,_________

2、面向对象的四大概念是:_______,_________,____________,_________

3、数据报类是________

4、Applet一定要继承于_______

5、异常技术主要用到的三个关键字是try, throw,___________

填空题答案

1:Statement

2:PrepareStatement

3:CallableStatement

4:抽象

5:封装

6:继承

7:多态

8:DatagramPacket

9:Applet

10:catch

第三部分:问答题

1:谈谈JAVA的窗口编程技术

2:谈谈JAVA的事件编程技术

3:谈谈JAVA的数据库编程技术

第四部分:编程题

1:编写一个窗口式程序,要求有菜单,有基本控件,通过一个标签显示当前时间。

2:用字符处理方式,来把一个文件的内容读到另外一个文件中,并把文件内容进行屏幕输出

3:通过键盘输入一行字符串,并用3种方式对其进行排序。每种方式用一个函数来表示。

第五部分:JAVA代码查错

1、

abstract class Name

{

private String name;

public abstract boolean isStupidName(String name) {}

}

答案:错。abstract method必须以分号结尾,且不带花括号。

2、

public class Something

{

void doSomething ()

{

private String s = "";

int l = s.length();

}

}

答案:错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

3、

abstract class Something

{

private abstract String doSomething ();

}

答案:错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract
method封锁起来呢? (同理,abstract method前不能加final)。

4、

public class Something

{

public int addOne(final int x)

{

return ++x;

}

}

答案:错。int x被修饰成final,意味着x不能在addOne method中被修改。

5、

public class Something

{

public static void main(String[] args)

{

Other o = new Other();

new Something().addOne(o);

}

public void addOne(final Other o)

{

o.i++;

}

}

class Other

{

public int i;

}

答案:正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference(比如:
o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。

6、

class Something

{

int i;

public void doSomething()

{

System.out.println("i = " + i);

}

}

答案、 正确。输出的是"i = 0"。int i属於instant variable (实例变量,或叫成员变量)。instant
variable有default value。int的default value是0。

7、

class Something

{

final int i;

public void doSomething()

{

System.out.println("i = " + i);

}

}

答案:错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant
variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int i = 0;"。

8、

public class Something

{

public static void main(String[] args)

{

Something s = new Something();

System.out.println("s.doSomething() returns " + doSomething());

}

public String doSomething()

{

return "Do something ...";

}

}

答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static
method不能直接call non-static methods。可改成"System.out.println("s.doSomething() returns " + s.doSomething());"。同理,static method不能访问non-static
instant variable。

9、此处,Something类的文件名叫OtherThing.java

class Something

{

private static void main(String[] something_to_do)

{

System.out.println("Do something ...");

}

}

答案:正确。从来没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同。

10、

interface A

{

int x = 0;

}

class B

{

int x =1;

}

class C extends B implements A

{

public void pX()

{

System.out.println(x);

}

public static void main(String[] args)

{

new C().pX();

}

}

答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import
java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为
public static final.所以可以通过A.x来明确。

11、

interface Playable

{

void play();

}

interface Bounceable

{

void play();

}

interface Rollable extends Playable, Bounceable

{

Ball ball = new Ball("PingPang");

}

class Ball implements Rollable

{

private String name;

public String getName() {

return name;

}

public Ball(String name)

{

this.name = name;

}

public void play()

{

ball = new Ball("Football");

System.out.println(ball.getName());

}

}

答案:错。"interface Rollable extends Playable, Bounceable"没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface
Rollable里的"Ball ball = new Ball("PingPang");"。任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public
static final。也就是说"Ball ball = new Ball("PingPang");"实际上是"public static final Ball ball = new Ball("PingPang");"。在Ball类的Play()方法中,"ball
= new Ball("Football");"改变了ball的reference,而这里的ball来自Rollable interface,Rollable
interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在"ball
= new Ball("Football");"这里显示有错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: