实现Java代码,写一个动物类(抽象类Animal),它有两个子类(狗类Dog)和猫类(Cat)实现抽象类Animal,在Animal类中有一个排序方法, sort(),让两个子类重写父类的sort()方法,其中Dog类按年龄升序排列并输出排序结果,Cat按年龄降序排列并输出排序结果。再定义一个接口ability(),让Dog和Cat实现这个接口。
时间: 2023-03-25 12:01:31 浏览: 165
好的,我可以回答这个问题。以下是Java代码实现:
```
// Animal抽象类
public abstract class Animal implements Comparable<Animal> {
protected int age;
public Animal(int age) {
this.age = age;
}
// 排序方法
public abstract void sort();
// 实现Comparable接口
@Override
public int compareTo(Animal o) {
return Integer.compare(this.age, o.age);
}
}
// Dog类
public class Dog extends Animal implements Ability {
public Dog(int age) {
super(age);
}
// 重写排序方法
@Override
public void sort() {
Collections.sort(dogs);
System.out.println("按年龄升序排列并输出排序结果:" + dogs);
}
// 实现Ability接口
@Override
public void ability() {
System.out.println("我是一只会看家护院的狗!");
}
}
// Cat类
public class Cat extends Animal implements Ability {
public Cat(int age) {
super(age);
}
// 重写排序方法
@Override
public void sort() {
Collections.sort(cats, Collections.reverseOrder());
System.out.println("按年龄降序排列并输出排序结果:" + cats);
}
// 实现Ability接口
@Override
public void ability() {
System.out.println("我是一只会抓老鼠的猫!");
}
}
// Ability接口
public interface Ability {
void ability();
}
// 测试类
public class Test {
public static void main(String[] args) {
Dog dog1 = new Dog(3);
Dog dog2 = new Dog(2);
Dog dog3 = new Dog(5);
List<Dog> dogs = new ArrayList<>();
dogs.add(dog1);
dogs.add(dog2);
dogs.add(dog3);
dog1.sort();
Cat cat1 = new Cat(4);
Cat cat2 = new Cat(1);
Cat cat3 = new Cat(6);
List<Cat> cats = new ArrayList<>();
cats.add(cat1);
cats.add(cat2);
cats.add(cat3);
cat1.sort();
dog1.ability();
cat1.ability();
}
}
```
以上是实现Java代码,写一个动物类(抽象类Animal),它有两个子类(狗类Dog)和猫类(Cat)实现抽象类Animal,在Animal类中有一个排序方法, sort(),让两个子类重写父类的sort()方法,其中Dog类按年龄升序排列并输出排序结果,Cat按年龄降序排列并输出排序结果。再定义一个接口ability(),让Dog和Cat实现这个接口。