一、选择题1、为了区分重载多态中同名的不同方法,要求( A)。
A) 采用不同的参数列表B) 返回值类型不同C) 调用时用类名或对象名做前缀D) 参数名不同2、定义主类的类头时可以使用的访问控制符是( C )。
A) private B) protected C) public D) private protected3、下列整型的常量属性i 的定义中,正确的是( A )。
A) static final int i=100; B) final int i;C) static int i; D) final float i=1.2f;4、设x,y 均为已定义的类名,下列声明对象x1的语句中正确的是( C )。
A) public x x1= new y( ); B) x x1=x( );C) x x1=new x( ); D) int x x1;5、下列方法定义中,正确的是( D )。
A) int x( int a,b ) B) double x( int a,int b){ return (a-b); } { int w; w=a-b; }C) double x( a,b ) D) int x( int a,int b){ return b; } { return a-b; }6、为了使包sos在当前程序中可见,可以使用的语句是( A )。
A)import sos.*; B)package sos.*;C)sos import; D)sos package;7、下面是有关子类继承父类构造函数的描述,其中正确的是(C )。
A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。
B) 子类无条件地继承父类不含参数的构造函数。
C) 子类通过super关键字调用父类的构造函数。
D) 子类无法继承父类的构造函数。
8、下面说法正确的是( A )。
A) final 可修饰类、属性、方法。
B) abstract可修饰类、属性、方法。
C) 定义抽象方法需有方法的返回类型、名称、参数列表和方法体。
D) 用final修饰的变量,在程序中可对这个变量的值进行更改。
9、现有两个类A、B,以下描述中表示B继承自A的是( D )。
A) class A extends B B) class B implements AC) class A implements B D) class B extends A10、Java中的每一个类:[ AC]A)只能有一个父类B)可以有多个父类C)可以没有父类D)只能实现一个接口11、以下程序运行结果是:[ A]public class FatherClass{public FatherClass(){System.out.print ("Father ");}}public class ChildClass extends FatherClass {public ChildClass() {System.out.print ("Child ");}public static void main(String[] args) {FatherClass fc = new ChildClass();}}A) FatherChild B) ChildC) Father D) 出错12、同一类中有两个以上方法同名称方法重载,Java语言规定:[C]A)不允许重载;B)父类的方法与子类的方法不构成重载;C)重载方法的参数表必须不同;D)重载方法的返回值类型必须不同。
13、下述关于继承的说法正确的是:[C]A)要从一个父类派生出一个子类,就要将父类代码全部复制过来,再添上子类特有的代码。
B)声明继承某个父类就意味着可以使用父类的全部非private变量和方法。
C)被继承的父类代码必须与子类代码在同一个源代码文件(.java文件)内。
D)父类的字节码文件(.class文件)必须与子类的字节码文件放在同一文件夹中。
14、关于在子类中调用父类构造方法的问题,下述说法正确的是:[B]A)子类构造方法一定要调用父类的构造方法;B)子类构造方法只能在第一条语句调用父类的构造方法;C)调用父类构造方法的方式是:父类名(参数表);D)默认情况下子类的构造方法将调用父类的无参数构造方法。
15、子类中定义的方法与父类方法同名且同形时称父类方法被复盖(也称重写)以下说法正确的是:[C]A)父类对象调用的也是子类的方法;B)在子类中仍可用super.方法名调用父被复盖的方法;C)父类中用final修饰的方法不允许被复盖;D)子类方法必须与父类被重写的方法在访问权限、返回值类型、参数表等方面完全一致。
16、用abstract修饰的类称为抽象类,它们:[A]A)只能用以派生新类,不能用以创建对象;B)只能用以创建对象,不能用以派生新类;C)既可用以创建对象,也可用以派生新类;D)既不能用以创建对象,也不可用来派生新类。
17、类中的某个方法是用final修饰的,则该方法:[C]A)是虚拟的,没有方法体;B)是最终的,不能被子类继承;C)不能用被子类同名方法复盖;D)不能用被子类其它方法调用。
18、一个类中,用static修饰的变量称静态变量:[D]A)同一时刻,该类的所有对象中该变量值都相同;B)所有对象中的方法都不能对该变量进行赋值操作;C)其值不能改变;D)与实例变量一样,每个对象中的值互相独立。
19、一个类中,用static修饰的方法称静态方法:[B]A)该类中其它方法不能调用它;B)它不能直接调用类中其它不用static修饰的方法;C)没有用类创建对象之前,类外无法调用该方法;D)类外调用该方法的方式必须是:对象名.方法名(实参数据)。
20、在定义一个类时,若希望某个成员方法调用范围是同一包内所有类,其修饰词应为:( ACD )A)public B)private C)protected D)默认21、关于Java中包的概念,以下正确的是:AA)包是一些类与接口的集合;B)J ava的包中可以包含子包;C)包中的类与子包中的类被认为是同一包内;D)包中的类不能访问子包中非public的类。
22、关于以下程序叙述正确的是:Aclass Base {Base(int i){System.out.print(“Base ”);}}class Test extends Base{Test ( ){System.out.print(“Test ”);}public static void main(String[] args){Test b = new Test();}}A)程序运行出错,因为Base类未定义构造方法;B)程序运行正常,输出Base ;C)程序运行正常,输出Base Test ;D)程序运行正常,但无输出。
二、简答题5.1 构造方法的作用是什么?他与一般方法有何不同?答:构造方法的主要功能是用来初始化类的成员变量或调用在创建这个类时必须调用的一些方法和运算。
它的方法名必须和类名相同,它可以是有参数的,也可以是无参数的,在构造方法里面也可以做其他的操作,但是它没有返回类型,所以他是一个特殊的方法。
Java语言中每个类都有构造方法,如果一个类中没有说明该类的构造方法,则系统将提供隐含的不带任何参数的构造方法,这个空的构造方法其实什么也不做。
一旦我们定义了自己的构造方法,Java编译器就不再添加这种默认的构造方法。
5.2final的作用是什么?this的作用是什么?super的作用是什么?答:final作为常量的修饰符;如果认为一个类的定义已经很完美,不需要生成它的子类时,就说明为final类;有些方法不能被覆盖,也可把他限定为final方法。
this是Java的一个关键字,表示每个实例对象指向自己的引用;关键字super来实现对父类的成员和方法的访问。
5.3如何定义一个抽象类?抽象类与类有哪些不同?答:抽象的目的是要根据它的格式来修改并创建新的类。
不能够通过抽象直接创建对象,只能通过创建抽象类派生出新的类,再由新类创建对象。
在抽象类中,方法的定义可分为两种:一种是普通方法,它和前面定义的方法没有什么不同;另一种是抽象方法,此方法以abstract 开头,且只声明了返回值的数据类型、方法名称、所需参数,但没有方法体。
由于不能用抽象类直接产生自己类型的对象,所以抽象类中不能定义构造方法。
5.4 如何定义一个抽象方法?如何实现一个抽象方法?答:用abstract说明的方法是抽象方法,该方法只有方法说明没有方法体,方法体在该抽象方法所在类的子类中被具体实现。
5.5 如何实现类的实例化?答:在Java语言中,一个Java对象是一个类的实例,创建一个对象就是创建类的一个实例,对象即类的实例化,new运算符用于创建一个类的实例并返回对象的引用。
格式为:type 对象名=new type([参数列表]);5.6 包的作用是什么?如何创建一个包?若源文件中没有指明package,那么java是如何处理的呢?答:包是为了唯一标识每个类并分组,每个类都有一个全名,为了促进代码重用,java语言允许将几个类组织在一个逻辑组中。
如果没有实用package,类被认为放在默认包中。
5.7 import的作用是什么?答:使用import语句引入java提供的类包中的类。
5.8 类变量与实例变量的区别是什么?答:用static说明的变量是一个静态变量,也称为类变量,无static说明的变量为实例变量。
静态变量与实例变量的区别是:实例变量必须通过类的对象访问,每个对象都有这些变量的备份;而静态变量独立与该类的任何对象,它在类的实例只有一个被备份,可以不通过类的对象而直接使用,它一直属于定义它的类,因此称为类变量。
类中所有对象都共享static变量,static变量通常称为全局变量。
类变量可以直接使用,而实例变量不行。
5.9 类方法与实例方法的区别是什么?类方法能调用实例方法吗?为什么?答:类方法是用static说明的方法,使用这个方法时不需要初始化该方法所在的类,static 类型的方法也不能被他的子类重载。
实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能访问实例变量,也不能引用实例方法,只能对类变量进行操作。
实例方法必须由实例对象来调用,类方法可以由实例对象来调用,也可以通过类名直接调用,在类方法中不能使用this和super.5.10 请问java能实现多重继承吗?如能,是如何处理的?答:java不支持一个子类直接继承一个父类,但可以通过接口来实现,一个类可以继承一个父类但可以实现多个接口。
三、编程练习【练习题】Static关键字与普通变量的区别:创建一个名称为StaticDemo的类,并声明一个静态变量和一个普通变量。