第十三章 多态
笔试题
一、填空题
二、选择题
1. 【基础题】下列哪种说法是正确的(D )
A. 实例方法可直接调用超类的实例方法
B. 实例方法可直接调用超类的类方法
C. 实例方法可直接调用其他类的实例方法
D. 实例方法可直接调用本类的类方法对象?
2. 【中等题】请在下题XXXXXX中选择正确的代码填入(D)
public class Parent{
public Parent(){
System.out.println(“good”);
}
public Parent(int j){
System.out.println(“bad”);
}
}
public class Example extends Parent{
public static void main(String[] args){
new Example();
}
public Example(){
XXXXXX
}
}
A. this
B. super
C. Parent
D. 什么都不填
3. 【基础题】class BaseClass{
private float x=1.0f;
private float getVar(){return x;}
}
class SubClass extends BaseClass{
private float x=2.0f;
//insert code
}
下面哪个构成getVar() 方法的覆盖 ( B )
A. float getVar(){
B. public float getVar(){
C. public double getVar(){
D. protected float getVar(){
E. public float getVar(float f){
4. 【中等题】下列说法正确的有(C )
A. 类中的构造函数不可省略
B. 构造函数必须与class同名,但方法不能与class同名
C. 构造函数在一个对象被new时执行
D. 一个class只能定义一个构造函数
三、名词解释
四、问答题
5. 【基础题】简述什么是多态现象?
答:
是允许将父对象设置成为和一个和多个它的子对象相等的技术,
举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果
6. 【中等题】简述方法覆盖重载有什么区别
答:
在继承中,如果子类的一个方法与父类中的方法有相同的名字并具有相同数量和类型的参数,这种情况称为方法覆盖
覆盖是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖
7. 【基础题】final有哪三种用法?每种用法是什么含义?
答:
1) 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变
2) 将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用
3) 当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展