推荐答案
在 Perl 中,方法重写(Overriding)是通过在子类中定义一个与父类中同名的方法来实现的。当子类对象调用该方法时,Perl 会优先调用子类中的方法,而不是父类中的方法。
// www.javascriptcn.com code example
package Parent;
sub new {
my ($class) = @_;
return bless {}, $class;
}
sub greet {
print "Hello from Parent!\n";
}
package Child;
use parent 'Parent';
sub greet {
print "Hello from Child!\n";
}
package main;
my $parent = Parent->new();
$parent->greet(); # 输出: Hello from Parent!
my $child = Child->new();
$child->greet(); # 输出: Hello from Child!本题详细解读
方法重写的概念
方法重写是指在面向对象编程中,子类可以定义一个与父类中同名的方法,从而覆盖父类中的方法实现。当子类对象调用该方法时,会执行子类中的方法,而不是父类中的方法。
Perl 中的方法重写
在 Perl 中,方法重写是通过在子类中定义一个与父类中同名的方法来实现的。Perl 会优先调用子类中的方法,而不是父类中的方法。
示例代码解析
父类
Parent:- 定义了一个
greet方法,输出"Hello from Parent!"。
- 定义了一个
子类
Child:- 使用
use parent 'Parent';继承自Parent类。 - 重写了
greet方法,输出"Hello from Child!"。
- 使用
主程序
main:- 创建
Parent和Child的对象。 - 调用
greet方法时,Parent对象调用父类的greet方法,而Child对象调用子类的greet方法。
- 创建
注意事项
- 方法重写时,子类方法的签名(参数列表)通常应与父类方法一致,以避免混淆。
- 如果需要在子类方法中调用父类的方法,可以使用
SUPER::关键字,例如$self->SUPER::greet();。