在Java中,要定义一个泛型类并使其继承自另一个泛型或非泛型类,可以使用extends
关键字
首先,我们定义一个泛型接口Shape
:
public interface Shape{ double getArea(); double getPerimeter(); }
接下来,我们定义一个泛型类Rectangle
,它继承自Shape
接口,并指定泛型参数T
必须是Number
或其子类:
public class Rectangleimplements Shape { private T width; private T height; public Rectangle(T width, T height) { this.width = width; this.height = height; } @Override public double getArea() { return width.doubleValue() * height.doubleValue(); } @Override public double getPerimeter() { double widthValue = https://www.yisu.com/ask/width.doubleValue();> 在这个例子中,
Rectangle
类限制了泛型参数T
必须是Number
或其子类。这意味着您可以使用Integer
、Double
等类型实例化Rectangle
类,但不能使用非数值类型。以下是如何使用
Rectangle
类的示例:public class Main { public static void main(String[] args) { RectangleintegerRectangle = new Rectangle<>(4, 5); System.out.println("Integer Rectangle Area: " + integerRectangle.getArea()); System.out.println("Integer Rectangle Perimeter: " + integerRectangle.getPerimeter()); Rectangle doubleRectangle = new Rectangle<>(4.5, 5.5); System.out.println("Double Rectangle Area: " + doubleRectangle.getArea()); System.out.println("Double Rectangle Perimeter: " + doubleRectangle.getPerimeter()); } } 输出:
Integer Rectangle Area: 20 Integer Rectangle Perimeter: 18 Double Rectangle Area: 24.75 Double Rectangle Perimeter: 23.0