從Java課程的PDF:http://www.ccs.neu.edu/home/riccardo/courses/csu370-fa07/lect4.pdf哪些語言「有繼承但沒有繼承」?
它說:
對於那些跟隨在家裏,我要強調,子類不繼承。我們將在課程的後面看到繼承。
當然,子類化和繼承是相關的。正如我們將看到的,繼承是一種代碼重用機制,可以讓您在定義子類時輕鬆地重用代碼。但是,即使沒有繼承,子類化也是有意義的。
(事實上,一些語言有子類,但沒有繼承,至少,像Java不是繼承實現。)
子類是類的屬性,是正確的Java類型系統的一部分。 Java使用子類來確定可以在對象上調用哪些方法,並在對象不提供給定方法時在編譯時返回錯誤。
我想知道哪些語言有繼承,但沒有繼承,至少,不像Java實現的繼承? (因爲我不太瞭解這些概念,所以如果我可以在某些實際語言中看到它,則會更清晰)
我沒有看到這樣一種語言的觀點,但理論上這可能是可能的。我只能想象一些較低級(並且很少知道)的語言有這種行爲。 – gaborsch
該課程的作者應該至少引用**一個**例子。不這樣做會導致括號失敗的鼬字測試。我從來沒有見過帶有繼承的*語言*,但沒有繼承。 *鍵入系統*,但不包括語言。例如,[COM](http://en.wikipedia.org/wiki/Component_Object_Model)具有子類化的概念,但是與語言無關,並不在COM本身直接支持繼承(我不認爲)。 –
我想這也取決於你對「語言」的定義。在上面,我認爲「語言」=「編程語言」,但這個詞比這個更普遍。 「接口定義語言」例如經常稱自己爲「語言」,但僅僅關注指定接口;他們根本沒有實現(因此沒有繼承,只是繼承)。但HTML本身也稱爲「語言」,但顯然不是編程語言。 –