发布时间 : 星期日 文章java练习题答案更新完毕开始阅读ba3ac60350e2524de5187ef8
7.父类的final方法可以被子类重写吗?答案:不可以
第5章(2)接口练习题答案
一、选择题
1、定义一个接口必须使用的关键字是( C ) A、public B、class C、interface D、static
2、抽象方法:( C ) A、可以有方法体
B、可以出现在非抽象类中 C、是没有方法体的方法
D、抽象类中的方法都是抽象方法
3、关于接口哪个正确?( A )
A、实现一个接口必须实现接口的所有方法 B.一个类只能实现一个接口 C.接口间不能有继承关系 D.接口和抽象类是同一回事
二、填空题
1、抽象方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。final方法是不能被当前类的子类重新定义的方法。
2、在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。
3、接口由两部分组成接口声明以及接口体。
4、接口可以看作是仅容纳抽象法以及常量,而又不能直接生成对象的特殊类。 5、用于将一个类修饰为最终类的关键字是final。用于声明一个类为抽象类的关键字是abstract。
6、abstract不能和final 共同修饰一个类。
7、 java中用extends 关键字指明继承关系.用implements关键字指明对接口的实现。 8、如果Alpha类继承Beta类,Alpha类被称为子(基)类,Beta类被称为父(超)类。 9、子类可以继承父类的成员变量 和成员方法,但是不能继承父类的构造函数。
10、下面程序的输出结果是:_ Art constructor , Drawing constructor , Cartoon constructor 。
class Art { Art() {
System.out.println(\); } }
class Drawing extends Art { Drawing() { super();
System.out.println(\); } }
class Cartoon extends Drawing { Cartoon() { super();
System.out.println(\); }
public static void main(String[] args) { Cartoon x = new Cartoon(); } }
11、写出以下程序的运行结果__4 ____ import java.io.*; public class ATest{
public static void main(String args[]) { SubClass sb = new SubClass( ); System.out.println(sb.fun( )); } }
class SuperClass{
int a =24 , b =5 ; }
class SubClass extends SuperClass{ int fun( ) { return a%b;} }
三、多项选择题
1、与第2行等价的定义方式是_____。A B 1. public interface Foo { 2. int k = 4; 3. }
A. final int k = 4; B. public int k = 4; C. abstract int k = 4; D. volatile int k = 4; E. protected int k = 4;
2、下面几个方法中,_____可以放在接口(interface)中。A B A.void methoda();
B. public double methoda();
C. public final double methoda(); D. static void methoda(double d1);
E. protected void methoda(double d1);
3、请问如下选项中,_____可以使得以上代码编译没有错误。E 1. public abstract class Test {
2. public abstract void methodA(); 3.
4. public abstract void methodB() 5. {
6. System.out.println(“Hello”); 7. }
8. }
A 给methodA加上方法体;
B 将第5-7行的代码用“;”代替
C 将类Test前面的修饰符abstract去掉
D 将方法methodA前面的修饰符abstract去掉 E 将方法methodB前面的修饰符abstract去掉
4、下面选项中,_____可以是合法的方法重写的形式。BD class BaseClass {
private float x = 0f;
protected float getVar() { return x; }
}
class SubClass extends BaseClass {
private float x = 0f;
____________________ }
A. float getVar() { return x; }
B. public float getVar() { return x; } C. public double getVar() { return x; } D. protected float getVar() { return x; }
E. public float getVar(float f) { return f; }
5、如果有如下这样一段代码 class A { A() { } } class B extends A { }
请在下面项中,正确的说法是:B D
A.类B的构造函数的访问权限是public B、 类B的构造函数没有参数
C、 类B的构造函数中包含this()方法的调用; D、 类B的构造函数中包含super()的调用
三、课后习题答案
3.什么类中可以有abstract方法? 答案:abstract类。
4.什么叫对象的上转型对象?
答案:假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,称这个A类对象是子类对象的上转型对象。父引用指向子对象。
5.什么叫接口的回调?
答案:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。
6.下列叙述哪些是正确的?AD A. final类不可以有子类
B. abstract类中只可以有abstract方法。
C. abstract类中可以有非方法,但该方法不可以用final修饰。 D. 不可以同时用final和abstract修饰一个方法。
9.写一个类A,该类创建的对象可以调用方法f输出英文字母表,然后再编写一个该类的子类B,要求子类B必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字母表,而且可以调用子类新增的方法g输出希腊字母表。
class A { public final void f() { char cStart = 'a', cEnd = 'z'; for (char c = cStart; c <= cEnd; c++) { System.out.print(\ } } }
class B extends A { public void g() { char cStart = 'α', cEnd = 'ω'; for (char c = cStart; c <= cEnd; c++) { System.out.print(\ } } }
public class Xiti9 { public static void main(String args[]) { B b = new B(); b.f(); b.g(); } }