"Sometimes" meaning rarely, or "sometimes" meaning almost always, but
I'm not ready to concede the point? (I, too, can split hairs! ;-)
Inheritance and subclassing are both about substitutability. I think
it would be fair to say that inheritance has _almost always_ been
associated with wholesale borrowing of the structure of the thing
being inherited from, either through copy or reference (through
delegation). The exceptions, like C++'s private inheritance, are at
the margins. In what language that you are aware of does inheritance
or subclassing not imply substitutability?
>
> So let me do so:
>
> XML element types have three interesting properties: content models,
> attributes and GIs. So to me, "inheritance" between element types would be
> about borrowing some or all of another element types content model,
> attributes or GIs.
>
If you only borrow some, you lose substitutability. If you want to
borrow without substitution, just use pe's. You haven't gained
anything semantically interesting.
> Subclassing, on the other hand, would be about having an element of one
> type "play the part of" an element of another type, such as a
> cross-reference "playing" an XLink.
>
Inheritance means playing the part of the element you are inheriting
from (with a nod towards awkward exceptions at the margin).
Matthew Fuchs
matt@veosystems.com