<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Is-a</id>
	<title>Is-a - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Is-a"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Is-a&amp;action=history"/>
	<updated>2026-07-13T20:32:54Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Is-a&amp;diff=848038&amp;oldid=prev</id>
		<title>imported&gt;Willy1018-bot：​BOTR：批量替換所有lang-xx模板為langx模板( V6.4.0.1 )</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Is-a&amp;diff=848038&amp;oldid=prev"/>
		<updated>2025-07-05T01:55:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E4%BA%BA/%E4%BD%9C%E4%B8%9A%E8%AF%B7%E6%B1%82#.E8.AB.8B.E6.B1.82.E6.89.B9.E9.87.8F.E6.9B.BF.E6.8F.9B.E6.89.80.E6.9C.89lang-xx.E6.A8.A1.E6.9D.BF.E7.82.BAlangx.E6.A8.A1.E6.9D.BF&quot; class=&quot;extiw&quot; title=&quot;wikipedia:机器人/作业请求&quot;&gt;BOTR&lt;/a&gt;：批量替換所有lang-xx模板為langx模板( V6.4.0.1 )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA&lt;br /&gt;
| T= zh-cn:is-a;zh-hk:is-a;zh-mo:is-a;zh-my:is-a;zh-sg:is-a;zh-tw:is-a;&lt;br /&gt;
| 1= zh-cn:参见;zh-hk:相關條目;zh-mo:相關條目;zh-my:参见;zh-sg:参见;zh-tw:相關條目;&lt;br /&gt;
| 2= zh-cn:参考文献;zh-hk:參考文獻;zh-mo:參考文獻;zh-my:参考文献;zh-sg:参考文献;zh-tw:參考資料;&lt;br /&gt;
| 3= zh-hans:知识表示; zh-hant:知識呈現;&lt;br /&gt;
| 4= zh-hans:面向对象程序设计; zh-hant:物件導向程式設計;&lt;br /&gt;
| 5= zh-hans:面向对象设计; zh-hant:物件導向設計;&lt;br /&gt;
| 6= zh-hans:类; zh-hant:類別;&lt;br /&gt;
| 7= zh-hans:继承; zh-hant:繼承;&lt;br /&gt;
| 8= zh-hans:苹果; zh-hant:蘋果;&lt;br /&gt;
| 9= zh-hans:计算机程序; zh-hant:電腦程式;&lt;br /&gt;
&amp;lt;!--| N= zh-hans:（中国简体）内容; zh-hant:（台灣正體）內容;--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
在[[知识表示]]、[[面向对象程序设计]]與[[面向对象设计]]的領域裡，&amp;#039;&amp;#039;&amp;#039;is-a&amp;#039;&amp;#039;&amp;#039;（{{langx|en|subsumption}}，包容）指的是在[[抽象化|抽象]]（比如[[类 (计算机科学)|類別]]或[[类型]]）之间體現的包容關係。例如類別D是另一個類別B的[[继承 (计算机科学)|子類別]]（類別B是類別D的[[继承 (计算机科学)|父類別]]），則D被包容在B內。換句話說，通常&amp;quot;D &amp;#039;&amp;#039;&amp;#039;is a&amp;#039;&amp;#039;&amp;#039; B&amp;quot;指的是，概念體D物是概念體B物的[[特殊化]]，而概念體B物是概念體D物的[[广义化|广泛化]]&amp;lt;ref&amp;gt;{{cite web|title=Subtypes and Subclasses|url=http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-170-laboratory-in-software-engineering-fall-2005/lecture-notes/lec14.pdf|publisher=MIT OCW|accessdate=2 October 2012|archive-date=2020-08-26|archive-url=https://web.archive.org/web/20200826123209/https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-170-laboratory-in-software-engineering-fall-2005/lecture-notes/lec14.pdf|dead-url=no}}&amp;lt;/ref&amp;gt;。舉例來說，[[水果]]是[[苹果]]、[[橘|橘子]]、[[杧果属|芒果]]與其他水果的广泛化。&lt;br /&gt;
&lt;br /&gt;
在[[面向对象程序设计]]裡，is-a類別關係是在[[继承 (计算机科学)|繼承]]概念的背景之下所形成的。比如說，[[苹果]]繼承（{{langx|en|inherit}}）水果的所有的屬性。is-a對比於[[has-a]]，後者是以[[整体词|整體]]-[[分体词|附屬]]階層關係所組成的。在真實世界裡設計一個模型時（例如[[计算机程序]]），尤其是物件與它的下一層從屬物件，在has-a與is-a兩者的關係上容易產生概念上的錯誤。is-a還可以是對比於[[instance-of]]，详情可參考[[类型和个例的区别]]。&lt;br /&gt;
&lt;br /&gt;
==子类型的例子==&lt;br /&gt;
&lt;br /&gt;
[[子类型]]确使一个给定的类型被用于替换其他的类型或抽象。子类型被称为建立了在子类型和某种现存抽象之间的&amp;#039;&amp;#039;&amp;#039;is-a&amp;#039;&amp;#039;&amp;#039;联系，要么隐式要么显式，依赖于语言支持。这个联系在支持继承作为子类型机制的语言中可以通过继承来显式表达。&lt;br /&gt;
&lt;br /&gt;
===C++===&lt;br /&gt;
下列[[C++]]代码建立在类&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;和&amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;之间的显式继承联系，这里的&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;是&amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;的子类和子类型二者，并且在指定了&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;的任何地方（通过引用、指针或对象自身）&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;都可以作为&amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;使用。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cpp&amp;gt;class A&lt;br /&gt;
{ public:&lt;br /&gt;
   void DoSomethingALike() const {}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class B : public A&lt;br /&gt;
{ public:&lt;br /&gt;
   void DoSomethingBLike() const {}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void UseAnA(A const&amp;amp; some_A)&lt;br /&gt;
{&lt;br /&gt;
   some_A.DoSomethingALike();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void SomeFunc()&lt;br /&gt;
{&lt;br /&gt;
   B b;&lt;br /&gt;
   UseAnA(b); // b可以用于替换A.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;ref name=&amp;quot;Mitchell2002&amp;quot;&amp;gt;&lt;br /&gt;
{{cite book&lt;br /&gt;
 | last=Mitchell&lt;br /&gt;
 | first=John&lt;br /&gt;
 | authorlink=John C. Mitchell&lt;br /&gt;
 | title=Concepts in programming language&lt;br /&gt;
 | year=2002&lt;br /&gt;
 | publisher=Cambridge University Press&lt;br /&gt;
 | location=Cambridge, UK&lt;br /&gt;
 | isbn=0-521-78098-5&lt;br /&gt;
 | page=287&lt;br /&gt;
 | chapter=10 &amp;quot;Concepts in object-oriented languages&amp;quot;}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
下列[[Python]]代码建立在类&amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;之间的显式继承联系，这里的&amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;是&amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;的子类和子类型二者，并且在要求了&amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;的任何地方&amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;都可以作为&amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;使用。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class A:&lt;br /&gt;
    def do_something_a_like(self):&lt;br /&gt;
        pass&lt;br /&gt;
&lt;br /&gt;
class B(A):&lt;br /&gt;
    def do_something_b_like(self):&lt;br /&gt;
        pass&lt;br /&gt;
&lt;br /&gt;
def use_an_a(some_a):&lt;br /&gt;
    some_a.do_something_a_like()&lt;br /&gt;
&lt;br /&gt;
def some_func():&lt;br /&gt;
    b = B()&lt;br /&gt;
    use_an_a(b)  # b可以被用来替代A.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在下列例子中，&amp;lt;code&amp;gt;type(a)&amp;lt;/code&amp;gt;是一个“正规”类型，而&amp;lt;code&amp;gt;type(type(a))&amp;lt;/code&amp;gt;是一个元类型（metatype）。尽管所有类型都分配了相同的元类型（&amp;lt;code&amp;gt;PyType_Type&amp;lt;/code&amp;gt;，它还是自身的元类型），这不是必需的。旧式的类，叫作&amp;lt;code&amp;gt;types.ClassType&amp;lt;/code&amp;gt;，也可以被当作不同的元类型&amp;lt;ref&amp;gt;{{cite web|author=Guido van Rossum|title=Subtyping Built-in Types|url=https://www.python.org/dev/peps/pep-0253/|accessdate=2 October 2012|archive-date=2020-05-14|archive-url=https://web.archive.org/web/20200514034406/https://www.python.org/dev/peps/pep-0253/|dead-url=no}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pycon&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = 0&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; type(a)&lt;br /&gt;
&amp;lt;type &amp;#039;int&amp;#039;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; type(type(a))&lt;br /&gt;
&amp;lt;type &amp;#039;type&amp;#039;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; type(type(type(a)))&lt;br /&gt;
&amp;lt;type &amp;#039;type&amp;#039;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; type(type(type(type(a))))&lt;br /&gt;
&amp;lt;type &amp;#039;type&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
*[[继承 (计算机科学)|繼承]]&lt;br /&gt;
*[[子类型]]&lt;br /&gt;
*[[Liskov代換原則]]&lt;br /&gt;
*[[整体词]]&lt;br /&gt;
*[[分体词]]&lt;br /&gt;
*[[has-a]]&lt;br /&gt;
&lt;br /&gt;
==引用==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== 參考資料 ==&lt;br /&gt;
* [[Ronald J. Brachman]]; [http://dblp.uni-trier.de/rec/bibtex/journals/computer/Brachman83 What IS-A is and isn&amp;#039;t. An Analysis of Taxonomic Links in Semantic Networks] {{Wayback|url=http://dblp.uni-trier.de/rec/bibtex/journals/computer/Brachman83 |date=20200630035007 }}. IEEE Computer, 16 (10); October 1983&lt;br /&gt;
* Jean-Luc Hainaut, Jean-Marc Hick, Vincent Englebert, Jean Henrard, Didier Roland: [https://web.archive.org/web/20070211062250/http://www.informatik.uni-trier.de/~ley/db/conf/er/HainautHEHR96.html Understanding Implementations of IS-A Relations]. ER 1996: 42-57&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:is-a}}&lt;br /&gt;
[[Category:面向对象的程序设计]]&lt;br /&gt;
[[Category:知识表示]]&lt;br /&gt;
[[Category:抽象]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Willy1018-bot</name></author>
	</entry>
</feed>