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】 } }
2.【代码1】:18。【代码2】:15。 四、编程题
该题目和第5章习题5的编程题类似,只不过这里要求使用接口而已。
设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下: ? 编写接口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()); Simulator playSound(Animal):void <
Animal.java
public interface Animal { public abstract void cry();
public abstract String getAnimalName(); }
Simulator.java
public class Simulator {
public void playSound(Animal animal) {
System.out.print(\现在播放\类的声音:\ animal.cry(); } }
Dog.java
public class Dog implements Animal { public void cry() {
System.out.println(\汪汪...汪汪\ }
public String getAnimalName() { return \狗\ } }
Cat.java
public class Cat implements Animal { public void cry() {
System.out.println(\喵喵...喵喵\ }
public String getAnimalName() { return \猫\ } }
Application.java
public class Example5_13 {
public static void main(String args[]) { Simulator simulator = new Simulator(); simulator.playSound(new Dog()); simulator.playSound(new Cat()); }
}
习题7(第7章)
一、问答题
1. 内部类的外嵌类的成员变量在内部类中仍然有效吗? 2. 内部类中的方法也可以调用外嵌类中的方法吗?
3. 内部类的类体中可以声明类变量和类方法吗?不可以 4. 匿名类一定是内部类吗?
1.有效。 2.可以。 3.不可以。 4.一定是。 二、选择题
1.下列代码标注的(A,B,C,D)中哪一个是错误的?c class OutClass { int m = 1;
static float x; //A class InnerClass {
int m =12; //B static float n =20.89f; //C InnerClass(){ }
void f() { m = 100; } }
void cry() {
InnerClass tom = new InnerClass(); //D } }
2.下列哪一个叙述是正确的?c
A.和接口有关的匿名类可以是抽象类。
B.和类有关的匿名类还可以额外地实现某个指定的接口。 C.和类有关的匿名类一定是该类的一个非抽象子类。
D.和接口有关的匿名类的类体中可以有static成员变量。 1.C。2.C。 三、阅读程序
1.大家好,祝工作顺利! 2.p是接口变量。 3.你好 fine thanks。
4.属于上机实习程序,解答略。 四、编程题
第3章例子9的程序允许用户在键盘依次输入若干个数字(每输入一个数字都需要按回车键确认),程序将计算出这些数的和以及平均值。请在第3章的例子9中增加断言语句,当用户输入的数字大于100或小于0时,程序立刻终止执行,并提示这是一个非法的成绩数据。
import java.util.*; public class E {
public static void main (String args[ ]){ Scanner reader = new Scanner(System.in); double sum = 0; int m = 0;
while(reader.hasNextDouble()){ double x = reader.nextDouble(); assert x< 100:\数据不合理\ m = m+1; sum = sum+x; }
System.out.printf(\个数的和为%f\\n\ System.out.printf(\个数的平均值是%f\\n\ } }
习题8(第8章)
一、问答题
1.\是正确的字符串常量吗?
2.\你好KU\和\的值分别是多少?
3.\和\的值分别是多少? 4.\的值是正数还是负数?
负数。String对象调用compareTo(String s)方法,按字典序与指定的String对象s的字符序列比较大小。如果当前String对象的字符序列与s的相同,该方法返回0;如果大于s的字符序列,该方法返回正值,如果小于s的字符序列,该方法返回负值。