According to https://dlang.org/spec/interface.html #10 this program should compile: ```ifa.d interface D { int foo(); } class A : D { int foo() { return 1; } } class B : A { int foo() { return 2; } } void main () { import std.stdio; B b = new B(); writeln (b.foo()); // returns 2 D d = cast(D) b; // ok since B inherits A's D implementation writeln (d.foo()); // returns 2; } ``` $ dmd ifa ifa.d(13): Error: cannot implicitly override base class method ifa.A.foo with ifa.B.foo; add override attribute $ dmd --version DMD64 D Compiler v2.082.0 Copyright (C) 1999-2018 by The D Language Foundation, All Rights Reserved written by Walter Bright
https://dlang.org/spec/interface.html #11 also need the override attribute.
I updated the docs to use runnable examples: https://dlang.org/spec/interface.html#implementing-interfaces https://dlang.org/spec/interface.html#reimplementing-interfaces