设计动物类Animal,要求如下:(1)protected的成员变量包括名称name、年龄age、性别sex、腿的数量legNum、体重weight;(2)定义空构造方法,定义能够初始化所有成员变量的构造方法;(3)省略setter和getter方法;(4)功能方法包括:protected方法eating(String food);重写Object类的toString()方法返回Animal对象的所有成员变量。 Pig类继承了Animal,Pig类的要求如下:(1)成员变量有长度length,高度height和颜色color;(2)定义构造方法能够初始化所有成员变量;(3)省略setter和getter方法;(4)功能方法包括:重写toString()方法返回Pig对象的所有成员变量;重写eating(String food)方法,food只能是Pig可以吃的食物;定义成员方法walking()表示Pig可以行走。 Chicken类继承Animal,Chicken类的要求如下:(1)成员变量有鸡冠颜色combColor;(2)定义构造方法能够初始化所有成员变量;(3)省略setter和getter方法;(4)功能方法有:重写toString()方法返回Chicken对象的所有成员变量,重写eating(String food)方法输出吃的动作和食物,定义成员方法flying()表示鸡可以飞。 定义测试类,完成如下任务:(1)创建猪对象佩奇peiqi,输出peiqi的基本信息,给peiqi喂白菜吃,peiqi在行走;(2)创建鸡对象杏花鸡xhj,输出xhj的基本信息,给xhj喂虫子,xhj在飞用java
时间: 2024-02-15 19:02:55 浏览: 148
好的,下面是使用Java语言实现的示例代码,来回答你的问题:
Animal类:
```java
public class Animal {
protected String name;
protected int age;
protected String sex;
protected int legNum;
protected double weight;
public Animal() {
}
public Animal(String name, int age, String sex, int legNum, double weight) {
this.name = name;
this.age = age;
this.sex = sex;
this.legNum = legNum;
this.weight = weight;
}
protected void eating(String food) {
System.out.println(name + " is eating " + food);
}
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", legNum=" + legNum +
", weight=" + weight +
'}';
}
}
```
Pig类:
```java
public class Pig extends Animal {
private double length;
private double height;
private String color;
public Pig(String name, int age, String sex, int legNum, double weight, double length, double height, String color) {
super(name, age, sex, legNum, weight);
this.length = length;
this.height = height;
this.color = color;
}
@Override
public String toString() {
return "Pig{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", legNum=" + legNum +
", weight=" + weight +
", length=" + length +
", height=" + height +
", color='" + color + '\'' +
'}';
}
@Override
protected void eating(String food) {
if (food.equals("cabbage")) {
System.out.println(name + " is eating " + food);
} else {
System.out.println(name + " cannot eat " + food);
}
}
public void walking() {
System.out.println(name + " is walking");
}
}
```
Chicken类:
```java
public class Chicken extends Animal {
private String combColor;
public Chicken(String name, int age, String sex, int legNum, double weight, String combColor) {
super(name, age, sex, legNum, weight);
this.combColor = combColor;
}
@Override
public String toString() {
return "Chicken{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", legNum=" + legNum +
", weight=" + weight +
", combColor='" + combColor + '\'' +
'}';
}
@Override
protected void eating(String food) {
System.out.println(name + " is pecking " + food);
}
public void flying() {
System.out.println(name + " is flying");
}
}
```
测试类:
```java
public class Test {
public static void main(String[] args) {
// 创建一只佩奇猪
Pig peiqi = new Pig("Peiqi", 3, "Female", 4, 80.0, 1.5, 0.8, "Pink");
System.out.println(peiqi.toString());
peiqi.eating("cabbage");
peiqi.walking();
// 创建一只杏花鸡
Chicken xhj = new Chicken("Xinghua", 1, "Male", 2, 1.0, "Red");
System.out.println(xhj.toString());
xhj.eating("worms");
xhj.flying();
}
}
```
在上面的代码中,我们首先定义了一个名为“Animal”的父类,它有一些protected成员变量如名称name、年龄age、性别sex、腿的数量legNum、体重weight等,还有一个空构造方法和一个能够初始化所有成员变量的构造方法。我们省略了getter和setter方法,并定义了一个名为“eating”的protected方法来表示动物吃东西的行为。我们还重写了Object类的toString()方法,以便在测试时打印出Animal对象的所有成员变量。
接下来,我们创建了一个名为“Pig”的子类,它继承了父类“Animal”的所有属性和方法,并新增了一些成员变量如长度length、高度height和颜色color等。我们使用构造函数来初始化父类变量和新增变量,并重写了父类的“eating”方法和新增了一个名为“walking”的方法来表示猪的行走行为。
然后,我们创建了一个名为“Chicken”的子类,它继承了父类“Animal”的所有属性和方法,并新增了一个成员变量如鸡冠颜色combColor。我们使用构造函数来初始化父类变量和新增变量,并重写了父类的“eating”方法和新增了一个名为“flying”的方法来表示鸡的飞行行为。
最后,我们创建了一个名为“Test”的测试类,在其中分别创建了一只猪对象和一只鸡对象,并测试了它们的基本信息以及相应的行为。
阅读全文