override(T)
Robert Jacques
sandford at jhu.edu
Thu Sep 24 09:21:24 PDT 2009
On Thu, 24 Sep 2009 09:30:46 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> Walter and I discussed last night about contravariance and all and could
> not find a compelling argument in favor of implementing contravariant
> arguments right now. The feature is nontrivial to implement, potentially
> surprising, and has a number of odd corner cases.
>
> One feature that does get requested often in C++ and Java is the ability
> to choose which class/interface contains the method you want to
> override. Consider:
>
> interface Lottery { void draw(); }
> interface Figure { void draw(); }
>
> class LotterySimulation : Lottery, Figure {
> override void draw();
> }
>
> Right now draw() overrides both methods, but you'd want to override them
> separately. You could do so through an intermediate interface:
>
> class Figure2 : Figure { void draw2() { return draw(); } }
> class LotterySimulation : Lottery, Figure2 {
> override void draw();
> override void draw2();
> }
>
> There are a few problems with this, among which the fact that
> LotterySimulation now cannot inherit another class; the one class slot
> was occupied by Figure2.
>
> So I was thinking of this:
>
> class LotterySimulation : Lottery, Figure {
> override(Lottery) void draw();
> override(Figure) void draw();
> }
>
> This is easy to implement, scales well, and has good real world uses.
> What say you?
>
>
> Andrei
Umm, but what method would LotterySimulation.draw call? Would it be the
override(Lottery) method or the override(Figure) method?
More information about the Digitalmars-d
mailing list