📄 ch07_03.htm
字号:
<html><head><title>Object-Oriented Perl (Perl in a Nutshell, 2nd Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Stephen Spainhour" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly & Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="0596002416L" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl in a Nutshell, 2nd Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Java and XSLT" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch07_02.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch07_04.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">7.3. Object-Oriented Perl</h2><p><a name="INDEX-1252" />In Perl circles, modules andobject-oriented programming are often spoken of in the same breath,but the connection is misleading. The implementation of modules inPerl is object-oriented, but that doesn't mean thatthe actual modules are objectified. Perl modulesdon't necessarily involve objects just because thePerl programmer has encapsulated their code in a module.</p><p>Generally, an object is an instance of a class. So in Perl terms, theobject is created by calling a constructor, and will be used tocreate a new object and a reference to it. (Often, the constructor isnamed <tt class="literal">new</tt>,<a name="INDEX-1253" /><a name="INDEX-1254" /><a name="INDEX-1255" /><a name="INDEX-1256" />but<tt class="literal">Create</tt> is also used in Win32 classes.) Thisreference is a regular scalar variable, except that it refers to anunderlying object that knows which class it belongs to. In yourprograms, you will use the reference to manipulate the object.</p><p><a name="INDEX-1257" /><em class="emphasis">Methods</em>are subroutines that expect an object reference as a first argument,such as:</p><blockquote><pre class="code">sub in_class { my $class = shift; # object reference my ($this, $that) = @_; # params}</pre></blockquote><p>Methods may be invoked like this: </p><blockquote><pre class="code">PackageName->constructor(<em class="replaceable"><tt>args</em>)->method_name(<em class="replaceable">args</tt></em>);</pre></blockquote><p>or: </p><blockquote><pre class="code">$object = PackageName->constructor(<em class="replaceable"><tt>args</tt></em>);$object->method_name(<em class="replaceable"><tt>args</tt></em>);</pre></blockquote><p>Objects have a specific set of available methods within their class,but they also inherit methods from their parent class, if they haveone.</p><p><a name="INDEX-1258" />Objects aredestroyed when the last reference to them goes away. You can controlthis capture before the object is destroyed with the<tt class="literal">DESTROY</tt> method. The <tt class="literal">DESTROY</tt>method should be defined somewhere in the class. You do not call<tt class="literal">DESTROY</tt> explicitly; it will be called at anappropriate time. Object references contained in the current objectwill be freed when the current object is freed. Most of the time, youwon't need to explicitly destroy an object, butthere are occasions when you should, such as when you are done with asocket object.</p><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch07_02.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch07_04.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">7.2. Modules</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">7.4. Object Syntax</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright © 2002</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -