Java中的多态类型[静态和动态多态与示例]
已发表: 2021-06-18目录
Java中的多态是什么?
面向对象编程 (OOP) 中的重要概念之一是多态性,这意味着可以以不同方式执行单个操作。 它源自希腊语:poly 和 morphs 表示许多和形式。 当它们通过继承相关时存在不同的形式。
与从不同类继承方法和属性的继承一样,多态应用这些方法并执行不同的任务。 一个对象能够通过多态性将自己塑造成各种形式。
也就是说,一个实体可以在不同的场景下执行不同的操作。 多态性在面向对象编程中最常见的用途之一是使用父类引用来引用子类对象。 阅读有关各种 OOP 概念和示例的更多信息。
Java中的多态可以通过三种方式实现:
方法覆盖:如果超类和子类包含相同的方法,则方法覆盖是指子类中的方法覆盖超类中的方法的过程。 因此,相同的方法将在不同的条件下执行不同的操作。
程序的输出:
Java 编程语言
通用英语
- 方法重载:方法重载是指创建具有相同名称但具有不同参数的方法的过程。 示例包括:void func() { ... }、void func(int a) { ... }、float func(double a) { ... }、float func(int a, float b) { ... }。
输出
**********
##########
- 运算符重载:运算符重载是 Java 中的一个概念,其中运算符对不同的操作数表现不同。 示例包括:
- 运算符“+”可用于数字加法和字符串连接。
数值加法 | 字符串连接 |
int a = 5; 诠释 b = 6; 整数总和 = a + b; // 输出 = 11 | 字符串优先=“Python”; 字符串第二 = “编程”; 姓名 = 第一个 + 第二个; // 输出 = Python 编程 |
- 运算符 &、| 和 ! 可用于逻辑和按位重载。
Java中的多态类型
面向对象编程关注四个基本概念,即抽象、封装、继承和多态。 多态性是根据对象的类和数据类型以不同方式处理对象的能力。
Java中有两种类型的多态性: Java 中的编译时多态性和运行时多态性。 这种java多态也称为静态多态和动态多态。
1. 静态多态(或编译时多态)
与大多数其他 OOP 编程语言一样, Java 多态性允许在一个类中合并多个方法。 这些方法使用相同的名称,但参数不同。 这代表了静态多态性。 这种多态性在编译器期间解决,并通过方法重载实现。 提供了三个标准,其中参数集必须不同:
- 参数编号应有所不同。
- 参数类型应该不同。
- 参数顺序不同。 例如,如果一个方法接受一个字符串和一个 long,而另一个方法接受一个 long 和一个字符串。 但是,这种类型的顺序使 API 难以理解。
由于参数的不同,每个方法都有不同的签名。 Java 编译器知道调用哪个方法。
从世界顶级大学在线学习软件课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
静态多态性示例
Java 支持静态多态的方法之一是方法重载。 下图展示了静态多态中方法重载的例子:
例子:
类 SimpleCalculator
{
int add(int a, int b)
{
返回 a+b;
}
int add(int a, int b, int c)
{
返回 a+b+c;
}
}
公开课Demo
{
公共静态无效主(字符串参数 [])
{
简单计算器 obj = new SimpleCalculator();
System.out.println(obj.add(25, 25));
System.out.println(obj.add(25, 25, 30));
}
}
程序的输出
50
80
2.动态多态性(或Java中的运行时多态性)
在java中的这种多态形式中,编译器不会确定要执行的方法。 它是在运行时执行进程的 Java 虚拟机 (JVM)。 动态多态性是指在运行时解决对覆盖进程的调用时的进程。 超类的引用变量调用被覆盖的方法。 由子类和超类实现的方法在共享相同名称的同时提供不同的功能。
在理解运行时多态性的概念之前,理解向上转型的过程是至关重要的。 向上转型是指子类的对象被超类的引用变量引用的过程。 了解 PHP 中的多态性。
动态多态性(或运行时)示例
示例 1:
创建了两个类 Bike 和 Splendor,并且 Splendor 类扩展了 Bike 类,覆盖了它的 run() 方法。 run() 方法由父类的引用变量调用。 由于子类方法覆盖了父类方法; 子类方法在运行时调用。
该程序
类自行车{
无效运行(){System.out.println(“运行”);}
}
类辉煌扩展自行车{
void run(){System.out.println(“安全行走 30 公里”);}
民众 静止的 无效的主要(字符串参数[]){
Bike b = new Splendor();//向上转型
b.运行();
}
}
输出:安全行走60km
示例 2
创建了两个名为“ABC”和“XYZ”的类,其中 XYZ 是子类,ABC 是父类。 在这里,父类的方法 myMethod() 被子类覆盖。 子类对象被分配给父类引用。
程序:
ABC类{
公共无效我的方法(){
System.out.println(“重写方法”);
}
}
公共类 XYZ 扩展 ABC{
公共无效我的方法(){
System.out.println(“覆盖方法”);
}
公共静态无效主要(字符串参数[]){
ABC obj = 新 XYZ();
obj.myMethod();
}
}
输出
覆盖方法
结论
java中多态的概念是面向对象编程中最有用的特性之一。 此外,在静态和运行时调用方法的能力扩大了它的适用性。
引入多态性概念背后的想法是灵活性。 此外,在单个参考变量中处理大量对象的能力使编码更容易一些。 因此,应该在日常编码任务中使用该概念并接受其有效性。
如果您想了解更多关于软件技术、其开发及其背后的机制的信息,您可以查看 upGrad 提供的软件开发中的执行 PG 程序 - 全栈开发专业化课程。 专业化课程是一个为期 23 周的在线课程,提供 300 多个案例研究,以提高您的知识和可用工具和编程语言,从而提高您的实践技能。 如果您对课程有任何疑问,请给我们留言。 我们的团队将与您联系。