本文概述
继承是任何类提取和使用其他类的功能的能力。在这个过程中, 新类称为派生类从现有的类创建基类。这里的基本概念是, 程序员能够将一个类的功能用于另一类, 而无需在不同的类中一次又一次地声明或定义相同的事物。不必在每个类声明期间编写成员函数, 我们可以从基类继承那些成员函数。继承是面向对象编程的最重要功能之一。
子类:
从另一个类继承属性的类称为子类或派生类。
超级班:
其属性被子类继承的类称为基类或超类。
继承的最基本概念是使用另一个类作为基础来创建或派生一个新类。
基类和派生类
基类用于派生称为的其他继承子类派生类。一个基类可以有多个派生类, 这种继承类型称为层次继承。这些派生类共享一个父类或基类。如果派生类共享多个父类并从多个父类继承其功能, 则这种继承称为多重继承.
上图显示了从基类派生一个类的顺序。每当需要从理论上描述继承顺序时, 都将使用如上图所示的顺序和表示法。
考虑一类车辆。现在, 我们需要为公共汽车, 汽车, 卡车等创建一个类。所有车辆的方法fuelAmount(), capacity(), applyBrakes()都相同。如果我们在不了解继承的情况下创建这些类, 则可以按照下图所示的方式进行:
上图显示了没有继承概念的这些类的创建
可以清楚地看到, 上述过程导致相同代码重复3次。这增加了错误和数据冗余的机会。为了避免这种情况, 将使用继承。如果我们创建一个Vehicle类并在其中编写这三个函数, 并从Vehicle类继承其余的类, 那么我们可以简单地避免数据重复并提高可重用性。请看下图, 其中三个类别是从车辆类别继承的:
使用继承, 我们只需要编写函数一次, 而不是编写函数三遍, 因为我们已经从基类(Vehicle)继承了其余三个类。
多级继承
Perl中的继承可以有多种类型, 但是多级继承是其中的基础类和派生类组成链的一种。在"多级继承"中, 派生类将继承基类, 并且派生类还充当其他类的基类。在下图中, 类A用作派生类B的基类, 而基类又充当派生类C的基类
在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 ;
my $self = {
'name' => shift , 'employee_id' => shift
};
# Bless function to bind object to class
bless $self , $class ;
# returning object from constructor
return $self ;
}
1;
上面的代码是基类的定义。这里的基类是雇员数据成员是员工ID和员工名称。父类的代码需要另存为* .pm, 这里我们将其另存为员工。现在, 我们将了解如何从已经声明的基类雇员派生一个类。
# Creating parent class
package Department;
use strict;
use warnings;
# Using class employee as parent
use parent 'employee' ;
1;
从上面的示例可以看出, 班级部门使用已经声明的班级雇员的特征。因此, 在声明类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" ;
输出如下:
因此, 当在大型项目中工作时, 继承起着至关重要的作用, 程序员希望缩短代码。