比方说,我有一个叫做“形状”的抽象父类,并且有多个子类(三角形,方形,圆形......)。我想在所有子类必须实现的父“形状”类中定义一个抽象方法,我们称它为“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