云和教育:云和数据集团旗下高端ICT职业教育品牌
  • 国家级全民数字素养与技能培训基地
  • 河南省第一批产教融合型企业建设培育单位
  • 郑州市数字技能人才(码农)培养评价联盟

什么是Java的多态性(polymorphism)?它有哪些不同的形式?

  • 作者:云和教育
  • 日期:2023-11-24
  • 浏览:893次

a5e312c7ff4a9019079988334d93c40.png

多态性是Java面向对象编程的一个重要概念,它允许不同的对象以一致的方式响应同一个方法调用,具体表现为对象在运行时可以表现出多个不同的形态。多态性主要有两种不同的形式:编译时多态性(静态多态性)和运行时多态性(动态多态性)。

1. 编译时多态性(静态多态性):

   – 也称为方法重载(method overloading)。

   – 在编译阶段确定调用哪个方法,根据方法名称、参数数量和参数类型的不同来区分不同的方法。

   – 例如,在同一个类中可以定义多个方法名相同但参数不同的方法。

示例代码:

java

class Calculator {

    int add(int a, int b) {

        return a + b;

    }

    double add(double a, double b) {

        return a + b;

    }

}

2. 运行时多态性(动态多态性):

– 也称为方法重写(method overriding)。

– 在运行时确定调用哪个方法,根据对象的实际类型来决定。

– 需要继承和方法重写的支持,通常用于实现子类覆盖父类的方法。

示例代码:

java

class Animal {

    void makeSound() {

        System.out.println("Animal makes a sound");

    }

}

class Dog extends Animal {

    @Override

    void makeSound() {

        System.out.println("Dog barks");

    }

}

 

class Cat extends Animal {

    @Override

    void makeSound() {

        System.out.println("Cat meows");

    }

}

在运行时多态性中,可以通过父类的引用来引用子类的对象,并且调用的方法将根据实际对象的类型而执行不同的操作。

总结:

      多态性是Java面向对象编程的重要特性,它分为编译时多态性和运行时多态性。编译时多态性通过方法重载实现,而运行时多态性通过方法重写和继承来实现,允许不同的对象以一致的方式响应方法调用,提高了代码的灵活性和可扩展性。