java 接口多态实例
时间: 2023-08-12 20:04:06 浏览: 113
好的,下面是一个简单的 Java 接口多态实例:
假设有一个接口 `Animal`,里面有一个抽象方法 `void makeSound()`,然后有两个类 `Dog` 和 `Cat` 分别实现了这个接口:
```
interface Animal {
void makeSound();
}
class Dog implements Animal {
public void makeSound() {
System.out.println("汪汪汪!");
}
}
class Cat implements Animal {
public void makeSound() {
System.out.println("喵喵喵!");
}
}
```
现在我们可以使用多态来实例化这些类,例如:
```
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // 输出:汪汪汪!
myCat.makeSound(); // 输出:喵喵喵!
```
这里 `myDog` 和 `myCat` 都是 `Animal` 类型的变量,但是它们分别指向了 `Dog` 和 `Cat` 的实例。当我们调用 `makeSound()` 方法时,会根据实例的类型调用相应类的实现,实现了多态。
相关问题
java 多态实例停车场
Java多态是指同一个方法在不同的对象上有不同的实现。停车场可以使用Java多态来实现,例如定义一个车辆类,然后定义不同类型的车辆类继承自车辆类,例如小汽车类、卡车类等等。然后定义一个停车场类,该类可以接受不同类型的车辆,因为这些车辆都是继承自车辆类的,所以可以使用多态来实现。停车场类可以定义一个停车方法,该方法可以接受不同类型的车辆作为参数,然后根据车辆类型的不同,执行不同的停车操作。例如,小汽车可以停在普通停车位,而卡车需要停在专门的大型车位上。这就是Java多态的一个实例。
java 多态
### Java 中的多态性及其使用示例
Java 的多态性是一种面向对象编程的核心特性,允许程序在父类引用变量中调用子类的具体实现[^1]。以下是关于如何在实际场景中运用多态的一个具体实例。
#### 示例代码展示
下面是一个简单的例子,展示了如何利用多态机制完成不同形状面积计算的功能:
```java
// 定义一个抽象基类 Shape
abstract class Shape {
abstract double computeArea(); // 抽象方法用于定义接口行为
}
// 圆形 Circle 子类继承自 Shape 并重写其方法
class Circle extends Shape {
private final double radius;
public Circle(double radius) { this.radius = radius; }
@Override
double computeArea() {
return Math.PI * radius * radius;
}
}
// 正方形 Square 子类同样继承并实现自己的逻辑
class Square extends Shape {
private final double sideLength;
public Square(double sideLength) { this.sideLength = sideLength; }
@Override
double computeArea() {
return sideLength * sideLength;
}
}
public class PolymorphismExample {
public static void main(String[] args) {
// 创建多个 Shape 类型的对象,但实际上指向不同的子类实例
Shape circle = new Circle(5);
Shape square = new Square(4);
System.out.println("Circle Area: " + circle.computeArea()); // 调用了 Circle 的实现
System.out.println("Square Area: " + square.computeArea()); // 调用了 Square 的实现
}
}
```
在这个例子中,`Shape` 是一个抽象类,提供了 `computeArea()` 方法作为统一接口。具体的实现则交给了它的各个子类(如 `Circle` 和 `Square`),这正是多态性的体现之一——通过父类类型的引用访问子类的实际行为[^1]。
#### 特性和优势总结
- **可替换性**:无论创建的是哪个子类对象,都可以被当作父类类型来使用。
- **可扩展性**:如果未来新增加一种图形比如三角形 Triangle,则只需让该新类也继承于 `Shape` 即可无缝集成到现有系统中而不影响原有结构[^1]。
- **接口能力**:所有子类都需遵循父类所设定的方法签名规则,从而保证了一致的操作方式。
- **灵活性与简化性**:减少了重复编码量的同时还增强了系统的适应能力和维护便利度。
阅读全文
相关推荐








