题目描述:
有动物猫、狗、猪、羊和鸡,他们有不同的叫声,用继承,编写代码,输入动物的名字,输出动物的名称以及特有的叫声。
做题步骤:
定义一个父类Animal,存储他们共有的属性和方法。代码如下:
package com.jer.ch09.animal;
/**
* 动物类
* @author Meizijiu
*
*/
public class Animal {
protected String name;
public Animal(String name) {
super();
this.name = name;
}
public void speak() {
System.out.println("我是一只"+name);
}
}
定义各动物类,存储其特有属性以及方法,并且继承父类Animal:
package com.jer.ch09.animal;
public class Cat extends Animal {
public Cat() { //构造是不能被继承的
super(AnimalFactory.CAT);
// TODO Auto-generated constructor stub
}
public void speak() {
super.speak();
System.out.println("喵喵喵~~~~");
}
}
package com.jer.ch09.animal;
public class Dog extends Animal {
public Dog() {
super(AnimalFactory.DOG);
// TODO Auto-generated constructor stub
}
public void speak() {
super.speak();
System.out.println("汪汪汪~~~~");
}
}
package com.jer.ch09.animal;
public class Pig extends Animal {
public Pig() {
super(AnimalFactory.PIG);
// TODO Auto-generated constructor stub
}
public void speak() {
super.speak();
System.out.println("哼哼哼~~~~");
}
}
package com.jer.ch09.animal;
public class Poult extends Animal {
public Poult() {
super(AnimalFactory.POULT);
// TODO Auto-generated constructor stub
}
public void speak() {
super.speak();
System.out.println("咯咯咯~~~~");
}
}
package com.jer.ch09.animal;
public class Sheep extends Animal {
public Sheep() {
super(AnimalFactory.SHEEP);
// TODO Auto-generated constructor stub
}
public void speak() {
super.speak();
System.out.println("咩咩咩~~~~");
}
}
定义一个工厂类:
package com.jer.ch09.animal;
public class AnimalFactory {
public static final String CAT="猫";
public static final String DOG="狗";
public static final String PIG="猪";
public static final String SHEEP="羊";
public static final String POULT="鸡";
public static Animal getAnimal(String name) {
switch (name) {
case CAT:
return new Cat();
case DOG:
return new Dog();
case PIG:
return new Pig();
case SHEEP:
return new Sheep();
case POULT:
return new Poult();
default:
return null;
}
}
}
最后定义一个测试类:
package com.jer.ch09.animal;
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
Animal animal = null;
while (true) {
System.out.print("请输入动物名称:");
animal = AnimalFactory.getAnimal(input.next());
if (animal!=null) {
animal.speak();
input.close();
return;
}else {
System.out.println("您输入的动物名称有误");
}
}
}
}