读者可订阅专栏:Java开发指南 |【CSDN@秋说】
Java 多态
概念
多态是面向对象编程中的一个重要概念,指的是同一个方法调用可以在不同的对象上产生不同的行为。简单来说,多态允许不同的对象对同一消息作出不同的响应。
多态性
多态性主要体现在两个方面:
1、编译时多态性:也称为静态多态性或早期绑定。在编译时,编译器会根据引用变量的类型来决定调用哪个方法。这种多态性发生在方法重载的情况下,即同一个类中存在多个同名方法,但参数列表不同。
2、运行时多态性:也称为动态多态性或晚期绑定。在运行时,通过继承和重写实现了方法的动态绑定。即使是相同的方法调用,由于对象的不同,最终执行的方法可能不同。
实现方式
多态性的实现基于以下三个重要原则:
1、继承:子类继承父类的属性和方法。
// 父类
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
// 子类继承父类
class Dog extends Animal {
// Dog 类继承了 eat() 方法
}
public class Ice {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // 输出:Animal is eating
}
}
2、重写:子类可以重新定义父类中已有的方法,以实现子类自己的行为。
// 父类
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
// 子类继承父类
class Dog extends Animal {
void eat() {
System.out.println("Dog is eating");
}
}
public class Ice {
public static void main(String[] args) {
Animal a = new Dog();//a属于Animal类型,但是它运行的是Dog类的eat方法。
a.eat(); // 输出:Dog is eating
}
}
3、抽象类和抽象方法:通过继承抽象类并重写其中的抽象方法,子类可以根据自身的需要提供不同的实现,从而实现多态性。
下一篇会讲到Java 抽象类
// 抽象类
abstract class Shape {
// 抽象方法
abstract void draw();
}
// 子类继承抽象类并实现抽象方法
class Circle extends Shape {
void draw() {
System.out.println("Drawing Circle");
}
}
class Rectangle extends Shape {
void draw() {
System.out.println("Drawing Rectangle");
}
}
public class Ice {
public static void main(String[] args) {
Circle circle = new Circle();
circle.draw(); // 输出:Drawing Circle
Rectangle rectangle = new Rectangle();
rectangle.draw(); // 输出:Drawing Rectangle
}
}