📜  珀尔 | OOP 中的方法

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

珀尔 | 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(); 

输出: