Sealed classes - would you want them in D? (v2)

arturg var.spool.mail700 at gmail.com
Thu May 17 07:36:40 UTC 2018


On Thursday, 17 May 2018 at 07:30:58 UTC, KingJoffrey wrote:
> On Thursday, 17 May 2018 at 06:03:19 UTC, arturg wrote:
>>
>> you could declare the public api of your class inside an 
>> actual interface then use it instead of the class, that wont 
>> give you access to the private members of the class.
>
> you mean like this?
>
> --------------------
> module test;
>
> interface Animal { string makeNoise(); }
>
> class Dog : Animal
> {
>     private string noiseType = "woof";
>
>     override string makeNoise()
>     {
>         return this.noiseType;
>     }
> }
>
> void main()
> {
>     import std.stdio;
>
>     auto dog = new Dog;
>     dog.noiseType = "meow"; // grr!
>     writeln(dog.makeNoise()); // wtf! Thanks to D, my dog can 
> now meow!
> }
>
> --------------------

no, that uses type inferance.
you have to do
Animal dog = new Dog;


More information about the Digitalmars-d mailing list