题目:某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。
游戏需要模拟的鸭子种类及其特征如下表所示。
首先定义三个接口:
public interface Sound {
public abstract void playSound();
}
public interface Fly {
public abstract void flySpecies();
}
public interface Appearence {
public abstract void AprSpecies();
}
然后根据三个接口实现每种特征(接口)的不同类型(方法),即方法重写。
public class Quack implements Sound{
public void playSound() {
System.out.println("嘎嘎...嘎嘎");
}
}
public class QuackNoWay implements Sound{
public void playSound() {
System.out.println("不发声");
}
}
public class Squeak implements Sound{
public void playSound() {
System.out.println("发出橡皮与空气摩擦声");
}
}
public class FlyWithWings implements Fly{
public void flySpecies() {
System.out.println("翅膀飞行");
}
}
public class FlyNoWay implements Fly{
public void flySpecies() {
System.out.println("不能飞行");
}
}
public class MallardDuckApr implements Appearence{
public void AprSpecies() {
System.out.println("灰色羽毛");
}
}
public class RedHeadDuckApr implements Appearence{
public void AprSpecies() {
System.out.println("灰色制毛-红头");
}
}
public class CottonDuckApr implements Appearence{
public void AprSpecies() {
System.out.println("白色");
}
}
public class RubherDuckApr implements Appearence{
public void AprSpecies() {
System.out.println("黑白橡皮色");
}
}
实现三种特征(接口)的不同类型(方法)后,创建四个类,实现四种鸭子的各个特征(方法)。
public class MallardDuck{
Sound sound;
Fly fly;
Appearence appearence;
public void setSound(Sound sound) {
this.sound=sound;
}
public void play() {
if(sound!=null)
sound.playSound();
else
System.out.println("没有可选择的声音");
}
public void setFly(Fly fly) {
this.fly=fly;
}
public void species() {
if(fly!=null)
fly.flySpecies();
else
System.out.println("没有可选择的飞行特征");
}
public void setAppearence(Appearence appearence) {
this.appearence=appearence;
}
public void apr() {
if(appearence!=null)
appearence.AprSpecies();
else
System.out.println("没有可选择的外观特征");
}
}
public class RedHeadDuck{
Sound sound;
Fly fly;
Appearence appearence;
public void setSound(Sound sound) {
this.sound=sound;
}
public void play() {
if(sound!=null)
sound.playSound();
else
System.out.println("没有可选择的声音");
}
public void setFly(Fly fly) {
this.fly=fly;
}
public void species() {
if(fly!=null)
fly.flySpecies();
else
System.out.println("没有可选择的飞行特征");
}
public void setAppearence(Appearence appearence) {
this.appearence=appearence;
}
public void apr() {
if(appearence!=null)
appearence.AprSpecies();
else
System.out.println("没有可选择的外观特征");
}
}
public class CottonDuck{
Sound sound;
Fly fly;
Appearence appearence;
public void setSound(Sound sound) {
this.sound=sound;
}
public void play() {
if(sound!=null)
sound.playSound();
else
System.out.println("没有可选择的声音");
}
public void setFly(Fly fly) {
this.fly=fly;
}
public void species() {
if(fly!=null)
fly.flySpecies();
else
System.out.println("没有可选择的飞行特征");
}
public void setAppearence(Appearence appearence) {
this.appearence=appearence;
}
public void apr() {
if(appearence!=null)
appearence.AprSpecies();
else
System.out.println("没有可选择的外观特征");
}
}
public class RubherDuck{
Sound sound;
Fly fly;
Appearence appearence;
public void setSound(Sound sound) {
this.sound=sound;
}
public void play() {
if(sound!=null)
sound.playSound();
else
System.out.println("没有可选择的声音");
}
public void setFly(Fly fly) {
this.fly=fly;
}
public void species() {
if(fly!=null)
fly.flySpecies();
else
System.out.println("没有可选择的飞行特征");
}
public void setAppearence(Appearence appearence) {
this.appearence=appearence;
}
public void apr() {
if(appearence!=null)
appearence.AprSpecies();
else
System.out.println("没有可选择的外观特征");
}
}
最后创建一个类实现整个软件效果:
public class Application {
public static void main(String[] args) {
MallardDuck mallardDuck = new MallardDuck();
System.out.printf("灰鸭的发声特征:");
mallardDuck.setSound(new Quack());
mallardDuck.play();
System.out.printf("灰鸭的飞行特征:");
mallardDuck.setFly(new FlyWithWings());
mallardDuck.species();
System.out.printf("灰鸭的外观特征:");
mallardDuck.setAppearence(new MallardDuckApr());
mallardDuck.apr();
System.out.println("------------------------------");
RedHeadDuck redHeadDuck = new RedHeadDuck();
System.out.printf("红头鸭的发声特征:");
redHeadDuck.setSound(new Quack());
redHeadDuck.play();
System.out.printf("红头鸭的飞行特征:");
redHeadDuck.setFly(new FlyWithWings());
redHeadDuck.species();
System.out.printf("红头鸭的外观特征:");
redHeadDuck.setAppearence(new RedHeadDuckApr());
redHeadDuck.apr();
System.out.println("------------------------------");
CottonDuck cottonDuck = new CottonDuck();
System.out.printf("棉花鸭的发声特征:");
cottonDuck.setSound(new QuackNoWay());
cottonDuck.play();
System.out.printf("棉花鸭的飞行特征:");
cottonDuck.setFly(new FlyNoWay());
cottonDuck.species();
System.out.printf("棉花鸭的外观特征:");
cottonDuck.setAppearence(new CottonDuckApr());
cottonDuck.apr();
System.out.println("------------------------------");
RubherDuck rubherDuck = new RubherDuck();
System.out.printf("橡皮鸭的发声特征:");
rubherDuck.setSound(new Squeak());
rubherDuck.play();
System.out.printf("橡皮鸭的飞行特征:");
rubherDuck.setFly(new FlyNoWay());
rubherDuck.species();
System.out.printf("橡皮鸭的外观特征:");
rubherDuck.setAppearence(new RubherDuckApr());
rubherDuck.apr();
}
}