<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>類別繼承、介面宣告與模組混成(mix-in)</title>
<link>http://blog.roodo.com/rocksaying/archives/2860767.html/</link>
<description><![CDATA[OOP c++ java ruby
在思考 Ruby 模組與混成(mix-in)概念的過程中，勾起了我當初學習 Java 的記憶。C++ 藉由多重繼承達成程式碼再用之目的，也因此衍生了類別鑽石繼承問題。而 Java 出現時，強調它使用單一繼承並結合介面宣告而避免鑽石繼承問題。然而我對介面的使用經驗卻是負面的。

介面只宣告行為的外觀而不牽涉細節，細節在類之中個別實現。舉例而言，如果有兩個不具共同父祖類別的類，假設為 A, B 類，但具有一個共同的行為、一段相同的程式。 C++ 的作法是將此共同行為 - 亦即這一段相同的程式 - 設計為一個類，假設為 C 類，再令 A, B 類多重繼承 C 類；只要 C 類之中沒有任何屬性與 A, B 類之父祖相同，就不會導致鑽石繼承，同時達成程式碼再用之目的。Java 的作法則有兩個方式，其一是介面，其二是深度繼承。
]]>
	</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/rocksaying/archives/2860767-comment.xml" rel="self" type="application/rss+xml" />
<item>
	<title>回應：類別繼承、介面宣告與模組混成(mix-in)</title>
	<description><![CDATA[我當年學的是 Java 1.0 ，那時還時沒有 delegate 這東西 (如果我沒記錯的話)。

後來我在 C# 中用過 delegate ，但是很麻煩... 非常麻煩。不會比 PHP 好到哪去。]]>
	</description>
	<link>http://blog.roodo.com/rocksaying/archives/2860767.html</link>
	<guid>http://blog.roodo.com/rocksaying/archives/2860767.html#comment-4189667</guid>
		<category>文章回應</category>
	<pubDate>Fri, 16 Mar 2007 14:50:35 +0800</pubDate>
</item>
<item>
	<title>回應：類別繼承、介面宣告與模組混成(mix-in)</title>
	<description><![CDATA[石頭成老大，我記得還有 delegate 可用~~

當然這得看設計的方式，我個人對物件導向設計還沒有什麼豐富的經驗，只是覺得談到介面時， delegate 這個技巧也是要考慮進去的項目。

聽您說要寫繼承的 Part 2 也引發了我一些想法；所以我自己就寫了一篇 <a href="http://blog.roodo.com/jaceju/archives/2853761.html">我也來實作 PHP mix-in 的概念 - Part 2</a> ，實作相關的概念。

至於怎麼讓它們能夠繼承，恕我愚眛，到現在還想不出什麼好方法。也很擔心這樣繼承的結果，反而可能會讓後面接手的人看不懂我在幹什麼。

個人粗淺意見，參考看看就好 :)]]>
	</description>
	<link>http://blog.roodo.com/rocksaying/archives/2860767.html</link>
	<guid>http://blog.roodo.com/rocksaying/archives/2860767.html#comment-4188757</guid>
		<category>文章回應</category>
	<pubDate>Fri, 16 Mar 2007 12:20:09 +0800</pubDate>
</item>
</channel>
</rss>