巩固与提高
1.选择题
(1)下列关于抽象类的说法中,正确的是( )。
A.抽象类可以继承非抽象类
B.抽象类不能实例化对象
C.抽象类必须包含抽象方法
D.继承抽象类的子类必须实现父类中的抽象方法
(2)下列关于接口的说法中,正确的是( )。
A.在接口中不能定义变量
B.在接口中可以定义非抽象方法
C.在接口中定义的方法都是public、static、abstract
D.接口可以实现多继承
(3)下列关于final的说法中,正确的是( )。
A.final修饰的类可以被继承
B.final修饰的方法不能被子类继承
C.final修饰的成员变量一旦初始化,就不能修改
D.final修饰的方法在子类可以被重写
(4)下列选项中,定义抽象类的关键字是( )。
A.interface
B.implements
C.abstract
D.class
(5)下列选项中,定义最终类的关键字是( )。
A.interface
B.implements
C.abstract
D.final
(6)下列选项中,用于定义接口的关键字是( )。
A.interface
B.implements
C.abstract
D.class
(7)现有类A和接口B,以下描述中表示类A实现接口B的语句是( )。
A.class A implements B
B.class B implements A
C.class A extends B
D.class B extends A
(8)下列关于抽象类的描述中,正确的是( )。
A.抽象类中不可以有非抽象方法
B.某个非抽象类的父类是抽象类,则这个子类不一定重载父类所有的抽象方法
C.不能用抽象类去创建对象
D.接口和抽象类是同一个概念
(9)下列说法中正确的是( )。
A.抽象类可以有构造方法
B.接口可以有构造方法
C.可以用new操作符操作一个接口
D.可以用new操作符操作一个抽象类
2.填空题
(1)如果接口中定义了一个方法methodA(),一个属性attA,那么一个类ClassA要实现这个接口的话,就必须实现其中的_________方法。
(2)接口中所有方法的修饰符均为__________和__________的。
(3)抽象方法是只有方法头,没有__________的方法。
(4)Java语言中接口是特殊的类,其中包含常量和____________方法。
(5)接口中所有属性的修饰符均为 ___________、____________和___________的。
(6)接口是特殊的类,所以接口也可以继承,子接口将继承父接口的所有___________和____________。
3.阅读程序并写出程序运行结果
(1)第一段程序:
abstract class AbstractBase { public AbstractBase(){ print(); } public abstract void print(); } class AbstractBaseImp extends AbstractBase{ int i = 4; public AbstractBaseImp(){ System.out.println(i); } public void print(){ System.out.println("i="+i); } public static void main(String args[]){ new AbstractBaseImp().print(); } }
运行结果:________________。
(2)第二段程序:
interface A{ String a = "接口A中变量"; void showA(); } interface B extends A{ String b = "接口B中变量"; void showB(); } interface C extends B{ String c = "接口C中变量"; void showC(); } class InterfaceABC implements C{ public void showA(){ System.out.println(a); } public void showB(){ System.out.println(b); } public void showC(){ System.out.println(c); } } public class InterfaceDemo{ public static void main(String[] args) { InterfaceABC i = new InterfaceABC(); i.showA(); i.showB(); i.showC(); } }
运行结果:______________。
4.操作题
(1)定义抽象的Intrument(乐器)类,声明一个抽象的play();定义一个派生类Stringed(弦类乐器),实现父类的抽象的play(),在main()中实例化Stringed类调用play()。
(2)定义含有抽象方法print()的基类,在构造方法中调用print();print()方法在派生类被重写,该方法打印在派生类中定义的成员变量i,在定义i时给定非零的初始值;在main()中,创建派生类的对象,然后调用print()。
(3)定义一个接口Myinterface,有两个抽象方法max()和min();在Operation类中实现该接口,同时实现抽象方法max()和min(),它们分别用于求任意三个整数中的最大值和最小值。
(4)定义一个Compute接口,有抽象方法add()、substract()、multiply()和divide();定义一个实现Compute接口的类Computer,然后创建Computer对象完成加、减、乘和除四个方法的调用。