Overlay is Class

I also have the feeling that class inheritance and Nix overlays are very similar and I like this state-like way to patch nixpkgs.
Reading your post I was wondering if the order of overlays matters any how ? Why using a list if order doesn’t matter ? The fixpoint convergence does not care about the order, am I wrong here ?
In your last example, I do not understand why java is superior. IMHO it can be handy to transparently call variables that will only be declared in the next overlay. It reminds me recursive attrsets on this point.