From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: How to stop inheritance in a good way?
Date: Wed, 15 Jan 2020 10:08:41 +0100
Date: 2020-01-15T10:08:41+01:00 [thread overview]
Message-ID: <qvmkqp$ih4$1@gioia.aioe.org> (raw)
In-Reply-To: 755521b8-d0a8-41bd-b547-da1136e3b8e1@googlegroups.com
On 2020-01-15 09:32, reinert wrote:
> Assume I define a tagged record (or interface) + derived types:
>
> type int1_t is interface;
> function A(x : int1_t) return Integer is abstract;
>
> type object1_t is abstract new int1_t with private;
> function A(x : object1_t) return Integer;
> function B(x : object1_t) return Integer;
>
> type object2_1_t is new object1_t with private;
> function C(x : object2_1_t) return Integer;
>
> type object2_2_t is new object1_t with private;
> function D(x : object2_2_t) return Integer;
>
> and I want object2_2_t *not* to inherit the function B (from type object1_t).
> I can make a dummy function B for object2_2_t (to override), but is it a more elegant/proper way? Or I here somehow break the concept of inheritance and enter a "dead end" ?
Inherit from object1_t privately?
type int1_t is interface;
function A(x : int1_t) return Integer is abstract;
type int2_t is interface;
function B(x : int2_t) return Integer is abstract;
type object1_t is abstract new int1_t and int2_t with private;
type object2_1_t is new int1_t and int2_t with private;
overriding function A(x : object2_1_t) return Integer;
overriding function B(x : object2_1_t) return Integer;
function C(x : object2_1_t) return Integer;
type object2_2_t is new int1_t with private;
overriding function A(x : object2_2_t) return Integer;
function D(x : object2_2_t) return Integer;
private
type object2_1_t is new object1_t with ...;
type object2_2_t is new object1_t with ...;
P.S. The suffix "_t" is really ugly.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2020-01-15 9:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-15 8:32 How to stop inheritance in a good way? reinert
2020-01-15 9:08 ` Dmitry A. Kazakov [this message]
2020-01-15 20:56 ` Randy Brukardt
2020-01-15 23:19 ` Jere
2020-01-17 9:48 ` reinert
2020-01-17 21:17 ` Optikos
2020-01-17 13:39 ` Shark8
2020-01-20 4:32 ` ric.wai88
2020-01-17 16:56 ` AdaMagica
2020-01-17 23:51 ` Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox