10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。
11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。
12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。
13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。
14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。
15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。
16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。
17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。
18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。
19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。
20.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。
21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。
22.一个接口可以通过关键字extends来继承(多个)其他接口。
23.接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。
24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。
25.静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法( );)。
26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。
27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。 二、简答题
1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?
2.如何创建一个类的子类?
3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?
4.什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?
5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么? 6.什么是成员变量的继承?什么是成员变量的覆盖?
7.举例说明什么是上转型对象,上转型对象的操作原则是什么? 8.简述接口定义的一般格式。
9.什么是接口?如何定义接口?接口与类有何区别? 10.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?
11.比较接口与抽象类的异同。
12.什么是抽象类?什么是抽象方法?各自有什么特点? 13.什么是最终类?什么是最终变量?什么是最终方法? 14.简述内部类的类型。
15.简述在外部类的内部与外部对实例成员类实例化的方法。 16.简述定义语句匿名类和参数匿名的一般格式。 17.什么是适配器模式?什么是装饰模式? 三、选择题
1.下面关于类的继承性的描述中,错误的是( C )。 A.继承是在已有的基础上生成新类的一种方法 B.Java语言要求一个子类只有一个父类 C.父类中成员的访问权限在子类中将被改变
D.子类继承父类的所有成员,但不包括私有的成员方法
2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是( B )。
A.默认 B.protected C.private D.public 3.在类的修饰符中,规定只能被同一包类所使用的修饰符是( B )。
A.public B.默认 C.final D.abstract
4.下列关于子类继承父类的成员描述中,错误的是( C )。
A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。
B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。 C.子类中继承父类中的所有成员都可以访问。
D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。
5.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?( AB )
A.public class MyClass extends Object B.public class MyClass
C.private class MyClass extends Object D.class MyClass extends Object
6.下列关于继承性的描述中,错误的是( C )。 A.一个类可以同时生成多个子类 B.子类继承了父类中除私有的成员以外的其他成员
C.Java支持单重继承和多重继承 D.Java通过接口可使子类使用多个父类的成员
7.下列关于抽象类的描述中,错误的是( C )。
A.抽象类是用修饰符abstract说明的 B.抽象类是不可以定义对象的 C.抽象类是不可以有构造方法的 D.抽象类通常要有它的子类 8.设有如下类的定义: public class parent {
int change() {} }
class Child extends Parent { }
则,下面哪些方法可加入Child类中?( AB ) A.public int change(){ } B.int chang(int i){ }
C.private int change(){ } D.abstract int chang(){ }
9.下列关于构造方法的叙述中,错误的是( D )。
A.构造方法名与类名必须相同 B.构造方法没有返回值,且不用void声明
C.构造方法只能通过new自动调用 D.构造方法不可以重载,但可以继承
10.下面叙述中,错误的是( C )。
A.子类继承父类 B.子类能替代父类 C.父类包含子类 D.父类不能替代子类
11.下列对多态性的描述中,错误的是( B )。
A.Java语言允许方法重载与方法覆盖 B.Java语言允许运算符重载 C.Java语言允许变量覆盖 D.多态性提高了程序的抽象性和简洁性
12.下面关于接口的描述中,错误的是( A )。
A.一个类只允许继承一个接口 B.定义接口使用的关键字是interface C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现 D.接口实际上是由常量和抽象方法构成的特殊类
13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?( C )
A.ArrayList myList=new Object(); B.ArrayList myList=new List();
C.List myList=new ArrayList(); D.List myList=new List();
14.下列哪些方法与方法public void add(int a){}为合理的重载方法?( ACD )
A.public void add(char a) B.public int add(int a) C.public void add(int a,int b) D.public void add(float a)
15.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是( C )。
A.public int MAX_LENGTH=100; B.final public int MAX_LENGTH=100;
C.public final int MAX_LENGTH=100; D.final int MAX_LENGTH=100; 四、判断题
1.Java语言中,构造方法是不可以继承的。( √ )
2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。( × )
3.抽象方法是一种只有说明而无具体实现的方法。( √ ) 4.Java语言中,所创建的子类都应有一个父类。( √ )
5.调用this 或super构造方法的语句必须放在第一条语句。( √ ) 6.一个类可以实现多个接口,接口可以实现“多重继承”。 ( √ ) 7.实现接口的类不能是抽象类。( √ )
8.使用构造方法只能给实例成员变量赋初值。( √ )
9.Java 语言不允许同时继承一个类并实现一个接口。( × ) 五、分析题
1.分析下面的程序,写出运行结果。
public class Exercises6_1 extends TT{ public void main(String args[]){
Exercises6_1 t = new Exercises6_1(\ }
public Exercises6_1(String s){ super(s);
System.out.println(\ }
public Exercises6_1(){ this(\ } }
class TT{
public TT(){
System.out.println(\ }
public TT(String s){ this();
System.out.println(\ } }
运行结果是:( ) What a pleasure! I am Tom
How do you do?
2.分析下面的程序,写出运行结果。
public class Exercises6_2 { private static int count; private String name; public class Student { private int count; private String name; public void Output(int count) { count++; this.count++; Exercises6_2.count++; Exercises6_2.this.count++; System.out.println(count + \this.count + \
+ Exercises6_2.count + \ercises6_2.this.count++);
} }
public Student aStu() { return new Student(); }
public static void main(String args[]) { Exercises6_2 g3 = new Exercises6_2(); g3.count = 10; Exercises6_2.Student s1 = g3.aStu(); s1.Output(5); } }
运行结果是:( ) 6 1 12 12
3.分析下面的程序,写出运行结果。
class Exercises6_3 { class Dog { private String name; private int age; public int step; Dog(String s, int a) { name = s; age = a; step = 0; } public void run(Dog fast) {
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java习题解答(4)在线全文阅读。
相关推荐: