Java中的多态到底是什么?
在Java中,多态是面向对象编程中的一个重要概念,它有助于提高代码的灵活性和可维护性。多态分为编译时多态和运行时多态。
-  编译时多态(静态多态): - 编译时多态是指在编译阶段确定方法的调用,主要与方法的重载(Overloading)有关。
- 通过方法的重载,同一个类中可以有多个同名方法,但它们的参数类型或个数不同。编译器根据方法调用时提供的参数类型和个数来决定调用哪个方法。
 class Example {void display(int a) {System.out.println("方法的整形参数: " + a);}void display(String str) {System.out.println("方法的字符串参数: " + str);} }- 在编译时,编译器根据方法参数类型来选择合适的方法。
 
- 编译时多态是指
-  运行时多态(动态多态): - 运行时多态是指在程序运行阶段确定方法的调用,主要与方法的重写(Overriding)有关。
- 通过方法的重写,子类可以提供对父类方法的不同实现。运行时,虚拟机根据对象的实际类型来动态选择调用哪个方法。
 class Animal {void makeSound() {System.out.println("动物的叫声");} }class Dog extends Animal {@Overridevoid makeSound() {System.out.println("狗汪汪叫");} } class Cat extends Animal {@Overridevoid makeSound() {System.out.println("猫喵喵叫");} }- 在运行时,根据实际对象类型决定调用哪个makeSound方法。
 Animal myDog = new Dog(); myDog.makeSound(); // 输出:狗汪汪叫 Animal myCat = new Cat(); myCat.makeSound(); // 输出:猫喵喵叫- 这里myDog是Animal类型的引用,但它指向的实际对象是Dog,因此调用makeSound时会执行子类Dog的实现。
- 这里myCat是Animal类型的引用,但它指向的实际对象是Cat,因此调用makeSound时会执行子类Cat的实现。
 
- 运行时多态是指
多态的优势在于能够编写通用的代码,减少对具体类型的依赖,提高代码的可扩展性和可维护性。通过合理运用编译时多态和运行时多态,Java程序可以更灵活地应对不同情境。