类和对象
一、选择题
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 每个数出现的概率。