Tony Johansson wrote:
My question is what advantage and disadvantage have public inheritance.
It depends on what you consider "advantage" or "disadvantage", doesn't it?
The answer that I have to this is that sometimes it is an advantage to let a
client have access to everything
declared in the public section of the derived class and the base class and
sometimed it is an disadvantage.
Good answer. Does this actually provide any information? It's like when
asked about the climate in Norway, you'd say, "Sometimes it rains and some
other times the sun's shining". No information whatsoever, except that it
doesn't rain all the time.
Another important advantage is that wherever you can use an object of base
class you can also use an object of it's derived class which result to using
polymorfism.
It doesn't necessarily involve polymorphism.
Sometimes it's a disadvantage to have the client be able to access everyting
in the public section.
Like, when?
If you use public inheritace and you want to use the methods in the
implementation it's not a good idea
because the client can access them.
Huh?
Have you any additional advantage or disadvantage to add to those that I
have mentioned.
I think you're thinking too much into that. What's the advantage and
disadvantage of addition? How about division? And multiplication? All
those operations are necessary in certain situations.
Public inheritance exists to specifically model the "is-a" relationship.
An object of the derived class can be used where an object of the base
class is expected. The language provides a conversion between the two.
If you don't want public members of the base class to be accessible via
the derived class object, don't use public inheritance.
V