华为ICT培训-高端面授华为ICT培训机构
云和教育:云和数据集团高端IT职业教育品牌
  • 华为
    授权培训中心
  • 腾讯云
    一级认证培训中心
  • 百度营销大学
    豫陕深授权运营中心
  • Oracle甲骨文
    OAEP中心
  • Microsoft Azure
    微软云合作伙伴
  • Unity公司
    战略合作伙伴
  • 普华基础软件
    战略合作伙伴
  • 新开普(股票代码300248)
    旗下丹诚开普投资
  • 中国互联网百强企业锐之旗
    旗下锐旗资本投资
当前位置:
首页IT问答正文

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

  • 发布时间:
    2023-10-16
  • 版权所有:
    云和教育
  • 分享:

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