通过接口和继承实现多态
时间: 2024-10-24 16:12:08 浏览: 5
在Java中,通过接口和继承可以实现多态。这里分别简述这两种方式:
**1. 接口(Interface)实现多态:**
接口是一种引用类型,它只包含常量(static final变量)和抽象方法(无实现的方法)。当你有一个接口,比如`Employee`, 它定义了一些行为,如`work()`. 可以有多个类实现这个接口,比如`Manager`和`Worker`. 这样所有实现了`Employee`接口的类都能共享相同的接口名,而具体的实现由它们各自的类提供。调用`Employee`接口的方法时,实际上是调用的是实现了该接口的某个具体类的方法。
```java
interface Employee {
void work();
}
class Manager implements Employee {
public void work() {
// 实现经理的工作
}
}
class Worker implements Employee {
public void work() {
// 实现员工的工作
}
}
// 调用多态
Employee emp = new Manager(); // 或者 Worker
emp.work(); // 根据实例调用相应的方法
```
**2. 继承(Inheritance)实现多态:**
继承允许一个类(子类)从另一个类(父类)继承属性和方法。子类可以覆盖或添加父类的方法,从而改变原有行为。当你有一个抽象类或者父类定义了一套通用方法,比如`AbstractClass`,它的子类如`ConcreteClassA`、`ConcreteClassB`都可以有自己的实现。通过父类引用调用方法时,将根据实际创建的对象类型来执行相应的方法。
```java
abstract class AbstractClass {
abstract void action();
}
class ConcreteClassA extends AbstractClass {
@Override
void action() {
// 具体操作
}
}
class ConcreteClassB extends AbstractClass {
@Override
void action() {
// 另一种具体操作
}
}
// 使用父类引用
AbstractClass obj = new ConcreteClassA(); // 或者 ConcreteClassB
obj.action(); // 动态调用对应子类的方法
```
无论哪种方式,多态的核心都是让程序在运行时根据实际情况动态地选择合适的处理逻辑。
阅读全文