Perl OOPs中的继承性

Perl OOPs中的继承性

继承是指任何类提取和使用其他类的特征的能力。它是一个过程,被称为派生类的新类是由称为基类的现有类创建的。这里的基本概念是,程序员能够将一个类的特征用于另一个类,而不需要在不同的类中反复声明或定义相同的东西。我们可以从基类中继承这些成员函数,而不是在每个类的声明中写成员函数。继承是面向对象编程中最重要的特征之一。

子类: 从另一个类继承属性的类被称为子类或派生类。

超级类: 其属性被子类继承的类被称为基类或超级类。

继承的最基本概念是 用另一个类作为基类来创建或派生一个新的类

基类和派生类

基类 被用来派生出额外的继承子类,称为 派生类 从一个基类中可以有多个派生类,这种类型的继承被称为 分层继承(Hierarchical Inheritance) 这些派生类共享一个父类或基类。如果一个派生类共享多个父类,并从多个父类中继承其特征,那么这种继承被称为 多重继承

Perl  OOPs中的继承性
上面的图片显示了一个类从基类派生的顺序。每当需要从理论上描述继承的顺序时,就会使用上图中的顺序和表示法。

考虑一个车辆类。现在我们需要为巴士、汽车、卡车等创建一个类。燃油量()、容量()、applyBrakes()等方法对所有的车辆都是一样的。如果我们在没有继承知识的情况下创建这些类,那么我们可以按照图中所示的方式进行:
Perl  OOPs中的继承性
上图显示了在没有继承概念的情况下创建这些类的情况。

可以清楚地看到,上述过程导致相同的代码重复了3次。这增加了错误和数据冗余的机会。为了避免这种类型的情况,我们使用了继承。如果我们创建一个Vehicle类,并在其中写入这三个函数,然后从vehicle类中继承其余的类,那么我们就可以简单地避免数据的重复,增加可重用性。请看下图,其中的三个类都是从车辆类继承的。

Perl  OOPs中的继承性
使用继承,我们只需要写一次函数,而不是三次,因为我们已经从基类(Vehicle)继承了其余的三个类。

多级继承

Perl中的继承可以有很多类型,但多级继承是指基类和派生类的连锁继承。在多级继承中,一个派生类将继承一个基类,同时,派生类也作为其他类的基类。在下图中,A类作为派生类B的基类,而B又作为派生类C的基类
Perl  OOPs中的继承性

在Perl中实现继承

Perl中的继承可以通过使用包来实现。包被用来创建一个父类,它可以被派生类用来继承其功能。

use strict;
use warnings;
  
# Creating parent class
package Employee;
  
# Creating constructor
sub new
{
    # shift will take package name 'employee' 
    # and assign it to variable 'class'
    my class = shift;
      
    myself = {
                'name' => shift,
                'employee_id' => shift
               };
      
    # Bless function to bind object to class
    bless self,class;
      
    # returning object from constructor
    return $self;
}
1;

上面的代码是基类的定义。这里的基类是employee,其数据成员是雇员的ID和雇员的名字。这个父类的代码需要保存为*.pm,这里我们将其保存为 employee.pm 现在我们将看到如何从已经声明的基类employee派生出一个类。

# Creating parent class
package Department;
   
use strict;
use warnings;
   
# Using class employee as parent 
use parent 'employee';
   
1;

从上面的例子中可以看出,部门类使用了已经声明的雇员类的特质。所以在声明Department类时,我们没有再次声明所有的数据成员,而是从基类employee中继承了它们。要运行这段代码,将中间类的代码保存为*.pm,这里保存为 Department.pm 这个类是中间类,并将进一步作为下面给出的派生文件 data.pl 的父类工作。

use strict;
use warnings;
   
# Using Department class as parent
use Department;
  
# Creating object and assigning values 
my a = Department->new("Shikhar",18017);
   
# Printing the required fields
print "a->{'name'}\n";
print "$a->{'employee_id'}\n";

输出:

Perl  OOPs中的继承性

因此,当在一个大项目上工作,程序员想缩短代码时,继承起了非常重要的作用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程