实现具有不同参数/返回类型的抽象方法可以通过以下几种方式:
例如,我们定义一个抽象类Animal,其中有一个抽象方法makeSound(),可以根据不同的动物类型实现不同的叫声:
abstract class Animal {
public abstract void makeSound();
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("汪汪汪");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("喵喵喵");
}
}
例如,我们定义一个抽象类MathOperation,其中有一个抽象方法calculate(),可以根据不同的操作数类型返回不同的计算结果:
abstract class MathOperation {
public abstract <T> T calculate(T operand1, T operand2);
}
class Addition extends MathOperation {
@Override
public <T> T calculate(T operand1, T operand2) {
if (operand1 instanceof Integer && operand2 instanceof Integer) {
return (T) Integer.valueOf(((Integer) operand1) + ((Integer) operand2));
} else if (operand1 instanceof Double && operand2 instanceof Double) {
return (T) Double.valueOf(((Double) operand1) + ((Double) operand2));
} else {
throw new IllegalArgumentException("Unsupported operand types");
}
}
}
例如,我们定义一个接口Shape,其中有一个抽象方法calculateArea(),可以根据不同的形状计算面积。接口中的默认方法可以提供通用的实现:
interface Shape {
double calculateArea();
default void printArea() {
System.out.println("The area is " + calculateArea());
}
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double calculateArea() {
return width * height;
}
}
以上是实现具有不同参数/返回类型的抽象方法的几种常见方式。具体选择哪种方式取决于具体的需求和设计。腾讯云相关产品和产品介绍链接地址请参考腾讯云官方文档。
领取专属 10元无门槛券
手把手带您无忧上云