比方說,我有一個叫做「形狀」的抽象父類,並且有多個子類(三角形,方形,圓形......)。我想在所有子類必須實現的父「形狀」類中定義一個抽象方法,我們稱它爲「draw」。所以所有形狀子類都必須提供「draw()」方法。但是,繪製方法需要「Stencil」類型的參數,並非每個形狀子類都可以使用任何模板...是否有可能在重寫的方法中有專門的參數?
所以有一個抽象「形狀」類,多個形狀子類和多個模具。我需要在形狀類中定義的繪製方法。一個正方形可能使用Stencil1,而該圓形可能使用Stencil2。
我猜泛型會做伎倆,但我不確定。每個形狀子類都需要定義具有特定模板的繪製方法,因爲這些類也被其他類使用,並且編譯器應該強制所有程序員使用該類支持的模板調用繪製方法。我們無法定義像「public abstract void draw(Stencil s)」這樣的抽象方法,因爲程序員可以將任何模具傳遞給方形類,而方形類僅支持「Stencil1」
任何想法?
UPDATE1: 要補充一點,形狀類不關心哪個模板被使用的子類,但是由於子類在其他班級太習慣,這一點很重要的是牽引方法被定義使得只有支持的模板被編譯器接受。
除了形狀類不關心,因爲當你說:「編譯器應該強制所有程序員調用與由該類支持模板抽籤方法」 – cgp 2009-05-04 15:19:26
沒有,形狀類不關心;這是關心各種Shape類別的其他用途。 – user85116 2009-05-05 00:16:33