习题六
一、问答题
1.接口中能声明变量吗?
2.接口中能定义非抽象方法吗?
3.什么叫接口的回调?
4.接口中的常量可以不指定初值吗?
5.可以在接口中只声明常量,不声明抽象方法吗?
二、选择题
1.下列哪个叙述是正确的
A.一个类最多可以实现两个接口。
B.如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法。
C.如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法。
java模拟器安卓D.允许接口中只有一个抽象方法。
2.下列接口中标注的(A,B,C,D)中,哪两个是错误的?
interface Takecare {
protected void speakHello(); //A
public abstract static void cry(); //B
int f(); //C
abstract float g(); //D
}
3.将下列(A,B,C,D)哪个代码替换下列程序中的【代码】不会导致编译错误。
A.public int f(){return 100+M;}
B.int f(){return 100;}
C.public double f(){return 2.6;}。
D.public abstract int f();
interface Com {
int M = 200;
int f();
}
class ImpCom implements Com {
【代码】
}
三、阅读程序
1.请说出E类中【代码1】,【代码2】的输出结果。
interface A {
double f(double x,double y);
}
class B implements A {
public double f(double x,double y) {
return x*y;
}
int g(int a,int b) {
return a+b;
}
}
public class E {
public static void main(String args[]) {
A a = new B();
System.out.println(a.f(3,5)); //【代码1】
B b = (B)a;
System.out.println(b.g(3,5)); //【代码2】
}
}
2.请说出E类中【代码1】,【代码2】的输出结果。
interface Com {
int add(int a,int b);
}
abstract class A {
abstract int add(int a,int b);
}
class B extends A implements Com{
public int add(int a,int b) {
return a+b;
}
}
public class E {
public static void main(String args[]) {
B b = new B();
Com com = b;
System.out.println(com.add(12,6)); //【代码1】
A a = b;
System.out.println(a.add(10,5)); //【代码2】
}
}
四、编程题
设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下:
●编写接口Animal
Animal接口有2个抽象方法cry()和getAnimaName(),即要求实现该接口的各种具体动物类给出自己的叫声和种类名称。
●编写模拟器类Simulator
该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal 可以调用实现Animal接口类重写的cry()方法播放具体动物的声音、调用重写的getAnimalName()方法显示动物种类的名称。
●编写实现Animal接口的Dog类和Cat类
图6.14是Simulator、Animal、Dog、Cat的UML图。
●编写主类Application(用户程序)
在主类Application的main方法中至少包含如下代码:
Simulator simulator = new Simulator();
simulator.playSound(new Dog()); simulator.playSound(new Cat());
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论