一、继承
对于已经习惯了面向对象编程的人应该不再陌生了。继承是其一个主要的特性,增加代码的重用从而提高软件的性能。
简单的说模块是包,包是类。在C++中的类中都存在一个构造函数,perl也是(当然也可以没有)。一般的perl模块的构造函数如下
Sub new{
My $this={};
Bless $this;
Return $this;
}
但是如果想这个模块派生出另一个模块,这样就不可以,应该在创建的时候就容许其被继承,就必须保证有不同的类型可以被传入到new函数中来,那就以上构造函数改为
Sub new{
$type=shift;
$class=ref($type)||$type;
My $this={};
Bless $this,$class;
Return $this;
}
Bless是可以有两个参数的,第二个可选的,如果没有写第二个参数,就是和本模块相bless,写了,就是和已写的类型相bless。可以多次bless一个引用对象,然而,新的将被bless的类必然把对象已被bless的引用去掉,就像在C中把一块内存赋给一指针,再把另一块内存赋给同一个指针,而没有释放前一块内存。记住,一个perl对象每一时刻只能属于一个类。
Perl类的方法只不过是一个Perl子程序而已,称之为成员函数。Perl的方法的定义不提供任何特殊语法,但规定方法的第一个参数为对象或其被引用的包。Perl有两种方法:静态方法和虚方法。
静态方法
静态方法第一个为类的名称,即为模块名称,方法处理第一个参数的方式决定了是静态还是虚的。静态的方法一般会忽略第一个参数,方法知道是属于那个类,如下
Sub dosomething{
My ($modulename