1. 分析宠物店种的类与方法
宠物:狗,猫,鸭子
宠物属性:有名字,健康值
狗类的属性:狗还有种类
方法:都会叫,都会简绍自己
鉴于它们都会叫和简绍,所以可以用接口或者抽象类来实现方法
2.代码如下:
定义抽象类,内含声音方法,j简绍方法
package petshop;
public abstract class Function {
abstract void sound() ;
abstract void speak();
}
定义宠物类,内含宠物姓名,宠物健康值
package petshop;
public class Pets extends Function {
private String name ;
private int healthIndex;
public Pets() {
this("无名氏",80);
}
public Pets(String name, int healthIndex) {
this.name = name;
this.healthIndex = healthIndex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealthIndex() {
return healthIndex;
}
public void setHealthIndex(int healthIndex) {
this.healthIndex = healthIndex;
}
@Override
void sound() {
}
@Override
void speak() {
System.out.println("我的名字是:"+this.name+"我的健康值是:"+this.healthIndex);
}
}
定义狗类,内包含狗类别和继承父类宠物类
package petshop;
public class Dog extends Pets {
private String kinds;
public Dog() {
super();
this.kinds = "品种未知";
}
public Dog(String name, int healthIndex, String kinds) {
super(name, healthIndex);
this.kinds = kinds;
}
public String getKinds() {
return kinds;
}
public void setKinds(String kinds) {
this.kinds = kinds;
}
@Override
public void sound() {
System.out.println("汪汪汪");
}
@Override
public String toString() {
return super.toString()+",我的品种是:"+kinds;
}
}
Duck 类
package petshop;
public class Duck extends Pets {
public Duck() {
}
public Duck(String name, int healthIndex) {
super(name, healthIndex);
}
@Override
public void sound() {
System.out.println("嘎嘎嘎");
}
}
Cat类
package petshop;
public class Cat extends Pets {
public Cat() {
}
public Cat(String name, int healthIndex) {
super(name, healthIndex);
}
@Override
public void sound() {
System.out.println("喵喵喵");
}
}
PetsShop类 其中包括商店进宠物,还有随机给顾客简绍宠物
package petshop;
import java.util.Random;
import java.util.Scanner;
public class PetShop {
static Pets pet[] = new Pets[3];
static PetShop petShop = new PetShop();
static Scanner scanner = new Scanner(System.in);
static String name[] = new String[3];
static int healthIndex[] = new int[3];
static String kinds[] = new String[3];
public static void main(String[] args) {
String str = new String();
//进货
for (int i = 0; i < 3; i++) {
System.out.println("请输入Dog/Cat/Duck");
str = scanner.next();
if (str.equalsIgnoreCase("dog")) {
System.out.println("请输入第" + (i + 1) + "只宠物的名字");
name[i] = scanner.next();
System.out.println("请输入第" + (i + 1) + "只宠物的健康指数");
healthIndex[i] = scanner.nextInt();
System.out.println("请输入第" + (i + 1) + "只宠物的种类");
kinds[i] = scanner.next();
petShop.pet[i] = new Dog(name[i], healthIndex[i], kinds[i]);
} else if(str.equalsIgnoreCase("duck")){
System.out.println("请输入第" + (i + 1) + "只宠物的名字");
name[i] = scanner.next();
System.out.println("请输入第" + (i + 1) + "只宠物的健康指数");
healthIndex[i] = scanner.nextInt();
petShop.pet[i] = new Duck(name[i], healthIndex[i]);
}else if (str.equalsIgnoreCase("cat")){
System.out.println("请输入第" + (i + 1) + "只宠物的名字");
name[i] = scanner.next();
System.out.println("请输入第" + (i + 1) + "只宠物的健康指数");
healthIndex[i] = scanner.nextInt();
petShop.pet[i] = new Cat(name[i], healthIndex[i]);
}else {
System.out.println("输入错误!!");
}
}
for (int i = 0; i < 3; i++) {
//随机选择宠物
int index = new Random().nextInt(petShop.pet.length);
Pets pet = petShop.pet[index];
//宠物开始自我介绍
pet.speak();
//我给你唱歌
pet.sound();
}
}
}
3.接口实现
将抽象类换成接口,方法不用实现,谁调用接口谁实现方法,可以将sound()与speak()分成两个接口,使其复用性更强。
