mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-07 07:12:25 +01:00
Author:halw
Date:2010-12-20T21:11:38.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@719 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -8,7 +8,7 @@ Create a class POINT and its heir CIRCLE to demonstrate polymorphic attachment a
|
||||
|
||||
==Source==
|
||||
|
||||
Problem description from [http://rosettacode.org/wiki/Polymorphism Rosetta Code]
|
||||
Problem description from [http://rosettacode.org/wiki/Polymorphism Rosetta Code: Polymorphism]
|
||||
|
||||
Solution varies from Rosetta Code description (e. g., feature <code>out</code> is redefined in this solution, versus feature <code>print</code>.)
|
||||
|
||||
|
||||
@@ -983,7 +983,11 @@ Likewise the compiler in EiffelStudio will produce warnings in cases in which ca
|
||||
|
||||
So far, our experience with inheritance is that of "conforming" inheritance ... the most commonly used type of inheritance. Conforming inheritance is what allows a direct instance (in the '''catcall''' example above) of <code>COW</code> to be attached at runtime to an entity of type <code>ANIMAL</code>. This can be a powerful modeling capability, but it is this same polymorphism facilitated by conforming inheritance that puts us in the danger of using polymorphic '''catcalls'''.
|
||||
|
||||
In cases in which polymorphic attachment is not anticipated, the possibility of catcalls can be avoided by using '''non-conforming inheritance'''. Non-conforming inheritance is just a more restrictive form of inheritance. It allows features to be inherited from parent to heir, but it disallows polymorphic attachment of a direct instance of an heir to an entity based on a non-conforming parent.
|
||||
In cases in which polymorphic attachment is not anticipated, the possibility of catcalls can be avoided by using '''non-conforming inheritance'''. Non-conforming inheritance is just a more restrictive form of inheritance.
|
||||
|
||||
|
||||
:'''Non-conforming inheritance allows features to be inherited from parent to heir, but it disallows polymorphic attachment of a direct instance of an heir to an entity based on a non-conforming parent.'''
|
||||
|
||||
|
||||
In order to use non-conforming inheritance for a particular parent, we use the marker <code>{NONE}</code> in the appropriate inheritance part of the class:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user