On Tue, Sep 22, 2020 at 11:06 AM claptrap via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

"Functions marked as final may not be overridden in a derived
class, unless they are also private"

So final private functions can be overriden? It seems not, but
the sentence is definitely confusing if not just plain wrong.

Yes they can, if you have class A in one module and class B in another module this will work:

//a.d
class A
{
private final void overrideFun()
{
import std.stdio : writeln;
writeln("A::overrideFun");
}
}

//b.d
import a;
class B : A
{
void overrideFun()
{
import std.stdio : writeln;
writeln("B::overrideFun");
}
}

// main.d
import b;

void main(string[] args)
{
B b = new B;
b.overrideFun;
}