Without multiples inheritance, how is this done?

Jack jckj33 at gmail.com
Sat May 8 18:33:35 UTC 2021


let's say I have:

```d
class Base
{
     int f()
     {
         doSomething();
         return n * 5;
     }

     void doSomething() { }
}

class Foo : Base
{
     void myMethod() { /* ... */ }
}

class Baa : Base
{
     void myMethod2() { /* ... */ }
}
```

then I'd like to make a extended version(making those DRY 
routines a class itself) of Foo and Baa, like this:

```d
abstract class DRY : Base
{
     this(int n)
     {
         this.n = n;
     }

     override int f()
     {
         super.doSomething();
         return n;
     }

     private int n;
}
```

but the class ExtendFoo and ExtendedBaa  must inherit from Foo 
and Baa, respectively. But how can I make it inherit the routines 
from DRY class too without multiples inheritance? in C++ I'd just 
do:

```d
class ExtendedFoo : DRY, Base { /* ... */ }
class ExtendBaa : DRY, Base { /* ... */ }
```


More information about the Digitalmars-d-learn mailing list