📄 inherit.html
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=bg2312">
<META NAME="Author" CONTENT="Spock">
<META NAME="GENERATOR" CONTENT="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<TITLE>MudOS v21c2 参考文件 - lpc - constructs - inherit</TITLE>
</HEAD>
<BODY TEXT="#CCFFFF" BGCOLOR="#000000" LINK="#33FF33" VLINK="#FF0000" ALINK="#33CCFF" BACKGROUND="../../../image/ff/fftitleback.jpg" NOSAVE>
<CENTER>
<H1>
<FONT COLOR="#FF99FF">inherit</FONT></H1></CENTER>
<CENTER>
<HR WIDTH="100%"></CENTER>
<CENTER><FONT COLOR="#FFFFCC">LPC 的 inherit 语句:</FONT></CENTER>
<HR WIDTH="100%">
<P>语法:
<UL><FONT COLOR="#FFCC99">inherit 路径名称;</FONT></UL>
<FONT COLOR="#FFCC99">路径名称前后必须加上双引号 " , 例如 "/std/object".</FONT>
<P>inherit 语句提供 LPC 物件继承的能力 (从面向对象程序设计而来的观念).
继承性 (inheritance) 让物件能继承其他物件的函数和变量. 因为 MudOS 驱动程序将全局数据
(global data) 储存于内部, 并且将不同物件的源代码分开编译(compile) , 所以许多不同的物件可以用继承能力分享同一段编译源代码.
每一个物件会将任何全局变量再自己拷贝一份. 假设分别有两个物件 A 与 B 继承物件
C , 重新编译 A 或 B 不会使 C 也重新编译一次. 但是, 这样会让 A 或 B 失去由
C 提供的全局变量值[记住, A 和 B 都有一份 C 提供之全局变量的拷贝. 所以更新
(update) A 不会影响 B 的全局变量 ( C 提供的) , 反之亦然].
<P>假设物件 A 继承物件 B. 物件 A 可以定义与 B 里面有相同名称的变量和函数.
如果 A 定义了一个与 B 中同名的函数, 则 A 定义的函数就超越 (override)
B 的函数定义. 如果 A 想使用 B 的定义, 可以这样做: 假设 A 定义了一个名为
query_long 的函数, 而 A 又想调用 /std/object.c 物件中的 query_long
函数, 则 A 可以使用 object::query_long() 来调用. 如果 A 定义了与 B 中同名的全局变量,
则 A 只能藉由调用 B 的函数以取得或操作 B 的同名全局变量. 如果 B 定义的一个全局变量,
在 A 中并没有声明 (declare) 过, 则 A 可以使用这个全局变量, 就像是 A 自己的全局变量一样
(假设 B 没有限制其他物件是否能存取此全局变量) 注意: 如果重新编译物件 B,
A 会一直使用旧的 B 物件, 直到物件 A 也重新编译一次.
<P>您可以多重继承. 多重继承就是一个物件可以继承一个以上的物件. 假设 special.c
继承 weapon.c 和 armor.c, 而 weapon.c 和 armor.c 都提供了自己的 query_long()
函数. 让我们假设 special.c 有时候想当成一样武器, 而有时候想当作一个护甲.
当 special.c 看来像是护甲时, 可以用 armor::query_long(), 而看来像武器时,
就用 armor::query_long().
<P>请参考 types/modifiers 此份文件, 说明被继承的物件可以对继承它的物件隐藏数据和函数定义.
<P>
<HR WIDTH="100%">
<CENTER><FONT COLOR="#FFFFCC">翻译: Spock @ FF 97.Aug.10.</FONT></CENTER>
<CENTER>
<HR WIDTH="100%"></CENTER>
<CENTER><A HREF="../constructs.html">回到上一页</A></CENTER>
<CENTER>
<HR WIDTH="100%"></CENTER>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -