On Fri, 2009-09-25 at 23:36 +1000, Magentus wrote:
> On Wed, 23 Sep 2009 18:40:04 +0200, Didier 'Ptitjes' wrote:
> 
> > For instance you may have an abstract class A that defines some
> > methods as virtual, a child class B that re-implements some of the
> > virtual methods of A and that wish the sub-classing to be blocked at
> > its level, because subclasses would break its behavior by
> > miss-overriding the virtuals.
> 
> Something I don't get here...  The whole point of subclassing, is to
> make something old, do something new.

Yes, that is true. However, you would be surprised how often in oo land
inheritance is misused in terms of 'is-a' and 'has-a', where composition
should be preferred instead of inheritance. If a library developer can
enforce that by marking the class final and ensuring it's behavior isn't
changed by inheritance, why not allow that?

> Isn't that like calling any developer that might be looking at
> extending your class, an idiot?  I'd have thought making sure virtuals
> aren't miss-overridden, is the responsibility of proper documentation.

That is a bit of harsh statement IMHO, but I think we could both agree
it would avoid some RTFM statements :)

> Does anyone have a concrete example of where this sort of thing is
> actually appropriate, just for the sake of blocking sub-classing?

I agree it is arguable and I don't see this as a high priority or must
have feature. But in the end it comes down to language design and in
vala's case, enforcing compile time errors instead of deferring critical
errors and misbehavior at runtime. (just like abstract classes are not
instantiatable, even if they don't contain abstract or pure virtual
methods)

Regards,
Hans

_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to