📜  珀尔 | OOP 中的多态性

📅  最后修改于: 2022-05-13 01:55:40.753000             🧑  作者: Mango

珀尔 | OOP 中的多态性

多态性是任何数据以一种以上的形式处理的能力。这个词本身表示含义,因为poly表示很多morphism表示类型。多态是面向对象编程语言中最重要的概念之一。多态性在面向对象编程中最常见的使用发生在使用父类引用来引用子类对象时。在这里,我们将看到如何以多种类型和多种形式表示任何函数。
多态性的现实生活例子,一个人同时可以在生活中扮演不同的角色。就像女人同时是母亲、妻子、雇员和女儿一样。因此,同一个人必须具有许多功能,但必须根据情况和条件实现每个功能。多态性被认为是面向对象编程的重要特征之一。

多态性是面向对象编程的关键力量。不支持多态的语言不能宣传自己是面向对象的语言,这一点非常重要。拥有类但没有多态能力的语言称为基于对象的语言。因此,它对于面向对象的编程语言非常重要。
它是对象或引用在不同实例中采用多种形式的能力。它实现了函数重载、函数覆盖和虚函数的概念。

这意味着多态是面向对象编程语言中的一种方法,它根据调用它的对象的类来做不同的事情。例如,$square->area() 将返回正方形的面积,但 $triangle->area() 可能返回三角形的面积。另一方面,$object->area() 必须根据调用的类 $object 来计算面积。

借助以下示例可以最好地解释多态性:

use warnings;
  
# Creating class using package
package A;
  
# Constructor creation
sub new
{
   
    # shift will take package name 'vehicle' 
    # and assign it to variable 'class'
    my $class = shift;
    my $self = {
                  'name' => shift,
                  'roll_no' => shift
               };
      
    sub poly_example
    {
      print("This corresponds to class A\n");
    }
};
  
package B;
  
# The @ISA array contains a list 
# of that class's parent classes, if any
my @ISA = (A);
  
sub poly_example
{
  print("This corresponds to class B\n");
  
}
  
package main;
  
B->poly_example();
A->poly_example();

输出:

对于第一个输出,类 B 中定义的方法 poly_example() 会覆盖从类 A 继承的定义,反之亦然。这使得可以添加或扩展任何预先存在的包的功能,而无需一次又一次地重写整个类的整个定义。从而使程序员很容易。