需要你编写的Dog子类: 增加violence(凶猛程度)属性(int型),重写info和speak方法 info方法输出Dog的name、age和violence属性,输出格式样例为:该狗的名字是Mike,年龄是2岁,凶猛程度是78度 (注意:输出结果中没有空格,逗号为英文标点符号) speak方法输出Dog 的叫声,输出格式样例为:旺旺 需要你编写的Cat子类: 增加mousingAbility(捕鼠能力)属性(int型),重写info和speak方法 info方法输出Cat的name、age和mousingAbility属性,输出格式样例为:该猫的名字是Kitty,年龄是4岁,捕鼠能力是88分 (注意:输出结果中没有空格,逗号为英文标点符号) speak方法输出Cat 的叫声,输出格式样例为:喵喵 需要你编写的Factory工厂类: Animal getAnimalByType(int type,String name, int age, int ownAttribute):根据传入的子类类型和属性值,返回一个Animal类型的上转型对象,type为1代表狗类,type为2代表猫类
时间: 2024-03-01 19:52:09 浏览: 95
Violence-Recognition-Dataset:一些战斗和正常的视频
好的,我理解了你的要求。以下是我编写的代码:
```
// Animal类
public abstract class Animal {
protected String name;
protected int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public abstract void info();
public abstract void speak();
}
// Dog类
public class Dog extends Animal {
private int violence;
public Dog(String name, int age, int violence) {
super(name, age);
this.violence = violence;
}
@Override
public void info() {
System.out.println("该狗的名字是" + name + ",年龄是" + age + "岁,凶猛程度是" + violence + "度");
}
@Override
public void speak() {
System.out.println("旺旺");
}
}
// Cat类
public class Cat extends Animal {
private int mousingAbility;
public Cat(String name, int age, int mousingAbility) {
super(name, age);
this.mousingAbility = mousingAbility;
}
@Override
public void info() {
System.out.println("该猫的名字是" + name + ",年龄是" + age + "岁,捕鼠能力是" + mousingAbility + "分");
}
@Override
public void speak() {
System.out.println("喵喵");
}
}
// Factory类
public class Factory {
public Animal getAnimalByType(int type, String name, int age, int ownAttribute) {
if (type == 1) {
return new Dog(name, age, ownAttribute);
} else if (type == 2) {
return new Cat(name, age, ownAttribute);
} else {
return null;
}
}
}
```
这个工厂类可以根据传入的类型参数,动态创建出对应的子类对象。你只需要调用`getAnimalByType`方法,传入相应的参数即可。
例如,如果要创建一个名为"Mike"、年龄为2岁、凶猛程度为78度的Dog对象,可以这样调用:
```
Factory factory = new Factory();
Animal animal = factory.getAnimalByType(1, "Mike", 2, 78);
animal.info(); // 该狗的名字是Mike,年龄是2岁,凶猛程度是78度
animal.speak(); // 旺旺
```
同样地,如果要创建一个名为"Kitty"、年龄为4岁、捕鼠能力为88分的Cat对象,可以这样调用:
```
Factory factory = new Factory();
Animal animal = factory.getAnimalByType(2, "Kitty", 4, 88);
animal.info(); // 该猫的名字是Kitty,年龄是4岁,捕鼠能力是88分
animal.speak(); // 喵喵
```
阅读全文