已知有如下animal抽象类,请编写其子类dog类与cat类,另外再编写一个生产动物的factory工厂类,具体要求如下。
时间: 2023-05-31 14:20:08 浏览: 238
### 回答1:
好的,以下是回复:
Animal抽象类:
1. 定义了属性name和age,以及方法eat()和sleep()。
2. eat()方法和sleep()方法都是抽象方法,需要子类实现。
Dog类:
1. 继承了Animal类,实现了eat()和sleep()方法。
2. 新增了属性breed,表示狗的品种。
Cat类:
1. 继承了Animal类,实现了eat()和sleep()方法。
2. 新增了属性color,表示猫的颜色。
Factory工厂类:
1. 定义了静态方法createAnimal(String type),根据传入的type参数创建不同的动物对象。
2. 如果type为"dog",则创建Dog对象并返回;如果type为"cat",则创建Cat对象并返回;如果type不是"dog"或"cat",则返回null。
3. 使用工厂类创建动物对象时,可以隐藏具体的实现细节,提高代码的可维护性和可扩展性。
### 回答2:
一、抽象类Animal
Animal类是一个抽象类,它的定义包含了一些让子类继承和实现的方法。其中包括:
1.抽象方法:eat和sleep
2.保护型成员变量:name和age
3.普通型成员变量:species
其中,eat和sleep都是抽象方法,需要各个子类实现。
二、Dog类
Dog类继承Animal类,具体实现了父类定义的抽象方法eat和sleep。此外,Dog类还增加了一个独有的方法bark,表示狗叫声,其实现是输出一段字符串。
三、Cat类
Cat类同样继承Animal类,具体实现了eat和sleep这两个抽象方法。然而,Cat类具有的独有特质却不同于Dog类,这就是它的行为——抓老鼠,因此Cat类增加了一个抓老鼠的方法catchMouse,其实现是输出一段字符串表示抓住了老鼠。
四、工厂类AnimalFactory
工厂类AnimalFactory是生成动物的一个类,它采用了工厂模式的思想,为用户动态创建不同的Animal实例。具体实现为采用反射机制,传入一个字符串参数,根据字符串所指定的类名,动态的创建一个Animal对象,最后返回给调用方使用。
总之,以上是一个简单的关于抽象类和工厂模式的应用案例,其中Dog类和Cat类各自继承自Animal类,并实现了自己的独有方法,此外还增加了一个工厂类,动态创建不同种类的动物实例。这就是一个简单、实用、生动形象的面向对象程序设计的例子。
### 回答3:
1. animal抽象类:属性包括name(名称)、age(年龄)、gender(性别)、weight(重量)和color(颜色);方法包括eat(进食)、sleep(睡觉)、move(移动)和makeSound(发出声音),其中makeSound为抽象方法。
2. dog类:继承自animal抽象类,新增属性包括breed(品种)和owner(主人);重写makeSound方法,发出“汪汪”的声音。
3. cat类:继承自animal抽象类,新增属性包括coat(毛色)和clawSize(爪子大小);重写makeSound方法,发出“喵喵”的声音。
4. factory工厂类:包含生产dog对象和cat对象的方法,分别为createDog和createCat。这两个方法分别接受不同的参数,用于设置产生的dog或cat对象的属性。
示例代码如下:
```
public abstract class animal {
protected String name;
protected int age;
protected String gender;
protected double weight;
protected String color;
public animal(String name, int age, String gender, double weight, String color) {
this.name = name;
this.age = age;
this.gender = gender;
this.weight = weight;
this.color = color;
}
public void eat() {
System.out.println("进食");
}
public void sleep() {
System.out.println("睡觉");
}
public void move() {
System.out.println("移动");
}
public abstract void makeSound();
}
public class dog extends animal {
private String breed;
private String owner;
public dog(String name, int age, String gender, double weight, String color, String breed, String owner) {
super(name, age, gender, weight, color);
this.breed = breed;
this.owner = owner;
}
public void makeSound() {
System.out.println("汪汪");
}
}
public class cat extends animal {
private String coat;
private String clawSize;
public cat(String name, int age, String gender, double weight, String color, String coat, String clawSize) {
super(name, age, gender, weight, color);
this.coat = coat;
this.clawSize = clawSize;
}
public void makeSound() {
System.out.println("喵喵");
}
}
public class factory {
public static dog createDog(String name, int age, String breed, String owner) {
return new dog(name, age, "male", 10.0, "white", breed, owner);
}
public static cat createCat(String name, int age, String coat, String clawSize) {
return new cat(name, age, "female", 5.0, "black", coat, clawSize);
}
}
```
使用方法如下:
```
dog myDog = factory.createDog("旺财", 3, "藏獒", "张三");
myDog.sleep();
myDog.makeSound(); // 输出“汪汪”
cat myCat = factory.createCat("小花", 2, "花色", "小爪");
myCat.eat();
myCat.makeSound(); // 输出“喵喵”
```
阅读全文