描述 写出一个泛型接口Human,和一个泛型类Dog 要求Human中包含属性nextGeneration为泛型 要求Dog中包含属性nextGeneration为泛型
时间: 2024-11-24 21:44:06 浏览: 16
在Java中,泛型是一种强大的特性,它允许你在编译时就确定类型,从而提高代码的可重用性和类型安全性。一个泛型接口或类使用尖括号`<>`来指定参数化类型。
首先,我们创建一个泛型接口`Human`,这个接口表示所有人类,他们有一个抽象的下一代属性,这个下一代可以是任何类型的个体:
```java
public interface Human<T> {
T getNextGeneration();
}
```
在这个接口中,`T`是一个类型参数,代表任何类型,`getNextGeneration()`方法返回的是该类型的实例。
接下来,我们定义一个泛型类`Dog`,它是`Human`接口的一个具体实现,表示狗也有一个下一代,同样采用泛型:
```java
public class Dog extends Human<Dog> {
private Dog nextGeneration; // 狗的下一代也是一个Dog
public Dog(Dog nextGeneration) {
this.nextGeneration = nextGeneration;
}
@Override
public Dog getNextGeneration() {
return nextGeneration;
}
}
```
这里,`Dog`类继承了`Human`接口,并指定了其泛型类型为`Dog`。这意味着`Dog`类的实例的`nextGeneration`属性也将是`Dog`类型。
现在,你可以创建一个具体的`Dog`对象并设置它的下一代,例如:
```java
public static void main(String[] args) {
Dog firstGen = new Dog(null); // 初代狗
Dog secondGen = new Dog(firstGen); // 第二代狗
System.out.println(secondGen.getNextGeneration()); // 输出:firstGen(第三代)
}
```
阅读全文