第十五章 接口
笔试题
一、填空题
二、选择题
1. 【中等题】下列那些选项符合接口的特征(A C D )
A. 接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法
B. 接口有构造方法,可以被实例化。
C. 一个接口不能实现另一个接口,但可以继承多个其他接口
D. 接口中的方法默认都是public、abstract类型的
2. 【基础题】下列哪种定义接口的方式是正确的 ( A )
A. public interface A{ int a(); }
B. public interface A implement B{}
C. interface C { int a; }
D. private interface D{}
E. abstract interface E{}
3. 【提高题】请指出下列代码错误的地方 (D)
interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable, Bounceable {
Ball ball = new Ball("PingPang"); A
}
class Ball implements Rollable { B
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() { C
ball = new Ball("Football"); D
System.out.println(ball.getName());
}
}
三、名词解释
四、问答题
1. 【中等题】抽象类和接口有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
2. 【中等题】接口里定义的成员变量都是使用final static修饰的,为什么?
答:
接口就是提供一种统一的”协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。所以接口不能定义变量。