设计一个类 Cat(属性为color:String)继承 Animal(属性为age :int ,方法:abstract void speak( )) 并且实现 Comparable 接口。 1)在Cat类中:编写带color参数的构造方法,并且调用父类带参数age的构造方法;对color属性编写其get和set方法;重写toString方法(输出颜色和年龄信息和动物的叫声(speak函数)); 2)测试程序生成一个包含4个Cat对象的数组(注意年龄要各不相同),数组类型为Animal,对4个对象调用deposit方法各一次,然后对其依据年龄进行排序(调用Arrays.sort方法), 输出排序后的结果。
时间: 2024-04-08 19:35:25 浏览: 48
通过animal类及其子类来联系继承以及虚拟类、接口
下面是按照你的要求设计的Cat类和相关的测试程序:
```java
import java.util.Arrays;
abstract class Animal implements Comparable<Animal> {
protected int age;
public Animal(int age) {
this.age = age;
}
public abstract void speak();
@Override
public int compareTo(Animal otherAnimal) {
return this.age - otherAnimal.age;
}
}
class Cat extends Animal {
private String color;
public Cat(int age, String color) {
super(age);
this.color = color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public void speak() {
System.out.println("喵喵喵");
}
@Override
public String toString() {
return "颜色: " + color + ", 年龄: " + age + ", 叫声: 喵喵喵";
}
}
public class CatTest {
public static void main(String[] args) {
Cat[] cats = new Cat[4];
cats[0] = new Cat(2, "黑色");
cats[1] = new Cat(5, "白色");
cats[2] = new Cat(3, "灰色");
cats[3] = new Cat(1, "橘色");
for (Cat cat : cats) {
cat.speak();
System.out.println(cat);
cat.deposit();
System.out.println();
}
Arrays.sort(cats);
System.out.println("排序后的结果:");
for (Cat cat : cats) {
System.out.println(cat);
}
}
}
```
在这个程序中,定义了一个抽象类Animal,其中包含一个age属性和一个抽象方法speak。Cat类继承Animal类,并添加了color属性和相关的方法。在Cat类中,重写了speak方法和toString方法。
测试程序中创建了一个包含4个Cat对象的数组。对每个对象调用了speak方法和deposit方法。然后,使用Arrays.sort方法对数组进行排序,排序的依据是年龄。最后输出排序后的结果。
希望这个程序能满足你的需求!如果还有其他问题,请随时提问。
阅读全文