珀尔 | OOP 中的方法
方法用于访问和修改对象的数据。这些是使用类或包本身的对象调用的实体。方法在 Perl 中基本上是一个子程序,方法没有特殊的标识。方法的语法与子程序的语法相同。就像子例程一样,方法是使用sub
关键字声明的。
该方法将调用它的对象或包作为其第一个参数。 OOPs 使用这些方法来操作对象的数据,而不是直接与对象交互,这样做是为了维护数据的安全性,以防止程序员直接更改对象的数据。这可以通过使用各种辅助方法来完成,这些辅助方法将对象作为参数并将其值存储到另一个变量中。此外,对第二变量进行修改。这些修改不会影响对象的数据,因此更安全。
Perl 中的方法类型:
根据传递的参数,方法可以分为两种类型—— static
方法和virtual
方法。
static
方法是传递给方法的第一个参数是类名的方法。静态方法的功能适用于整个类,因为它将类的名称作为参数。这些方法也称为类方法。由于大多数方法都在同一个类中,因此无需将类名作为参数传递。
示例:类的构造函数被认为是静态方法。
virtual
方法是将对象的引用作为第一个参数传递给函数的方法。在虚函数中,第一个参数被转移到一个局部变量,然后这个值被用作一个引用。
例子:
sub Student_data
{
my $self = shift;
# Calculating the result
my $result = $self->{'Marks_obtained'} /
$self->{'Total_marks'};
print "Marks scored by the student are: $result";
}
面向对象编程中的方法需要括号来保存参数,而这些方法是使用箭头运算符( -> ) 调用的。
get-set
方法:
方法用于为对象的数据提供安全性,因此可以与对象的引用一起使用,或者将值存储在其他一些变量中然后使用。在 OOP 中使用get-set
方法为对象提供这种数据安全性。 get-method
帮助获取对象的当前值, set value
方法用于为对象设置新值。
例子:
# Declaration and definition of Base class
use strict;
use warnings;
# Creating parent class
package vehicle;
# Setter method
sub set_mileage
{
# shift will take package name 'vehicle'
# and assign it to variable 'class'
my $class = shift;
my $self = {
'distance'=> shift,
'petrol_consumed'=> shift
};
# Bless function to bind object to class
bless $self, $class;
# returning object from constructor
return $self;
}
# Getter method
sub get_mileage
{
my $self = shift;
# Calculating result
my $result = $self->{'distance'} /
$self->{'petrol_consumed'};
print "The mileage by your vehicle is: $result\n";
}
# Object creation and method calling
my $ob1 = vehicle -> set_mileage(2550, 170);
$ob1->get_mileage();
输出: