2016-07-01 50 views
0

在基於原型的編程中,通過克隆原型創建新對象。在新對象中,可以通過添加,刪除或修改方法和數據來改變行爲。在我的講義中寫道,通過動態分派來實現方法調用,即當調用對象上的方法時,我們看看該方法在對象中是否可用,如果不是,則將請求委託給其父對象。我們如何實現方法移除?對象是否有一個不應該委派給父對象的已刪除方法的列表?我認爲增加和修改更加自然,在這種授權的精神下去除...在基於原型的編程中刪除方法

回答

0

你是否在談論任何特定的編程語言?

作爲一個概念,從超類的可用子類中刪除一個方法是沒有意義的。您可以通過特定方式更改行爲,但不能刪除功能。

如果您調用「已刪除」方法,可以強制執行一個錯誤,請參閱Disabling inherited method on derived class以獲得一個java示例和一個有趣的討論。但在我看來,如果你真的需要刪除一個方法,可能你的班級設計不好。

+0

請記住,問題是關於基於原型的語言。沒有類層次結構。 –

+0

同意,我不應該談論類和子類。但是在原型繼承中還有一個層次結構(由對象鏈接到對方的方式定義)。正如我所說,我不認爲你應該使用對象的原型實例,如果你不需要該對象的所有功能。分割原型對象或使用更多級別的繼承是一個更好的主意。我發現@Chandu關於Shape類的例子非常具有啓發性。 –