Am 03.06.2013 18:19, schrieb Manu:
On 3 June 2013 18:20, Jacob Carlborg <d...@me.com <mailto:d...@me.com>>
wrote:

    On 2013-06-03 10:11, deadalnix wrote:

        The whole concept of OOP revolve around the fact that a given
        class and
        users of the given class don't need to know about its subclasses
        (Liskov's substitution principle). It is subclass's
        responsibility to
        decide what it override or not, not the upper class to decide
        what is
        overriden by subclasses.

        If you want to create a class with customizable parts, pass
        parameters
        to the constructor. This isn't OOP what OOP is about.

        The performance concern is only here because things has been smashed
        together in a inconsequent way (as it is often done in D). In
        Java for
        instance, only overriden function are actually virtual.
        Everything else
        is finalized at link time. Which is great because you are able to
        override everything when testing to create mock for instance, while
        keeping good performance when actually running the application.


    I've read a book, Effective Java, where it says, something like:

    If you don't intend your class to be subclassed make it final,
    otherwise document how to subclass and which methods to override.


Sounds like even they know the truth I speak, but they must enforce this
by convention/documentation rather than offering strict guarantees ;)
It's interesting (but not at all surprising) that C# which is much more
modern decided to go the C++ way rather than the Java way.

C# just followed the Object Pascal/Delphi model, which is based in C++. That's why.

You have to thank Anders for it.

--
Paulo

Reply via email to