> The language coming closest to the optimum is Vala. Private fields are not
> part of an objects ABI, neither is (for callees) whether a method is
> virtual or not.
I'm pretty sure private fields are not part of the ABI in Java, either. Your jar files will continue to work when someone changes private fields in a different jar. It's a nice feature and a lot of modern programming languages have it.
And as you noted, C has it as well. Private stuff stays private in C (as opposed to C++.)