Jinak zakázání abstract private není konstrukce navíc, ale naopak restrikce navíc, stejně jako "devirtualizace"
private metod, z který to vychází, je opět pravidlo navíc a nikoli pravidlo namíň, takže ani ta argumentace
až tak nesedí....
Ono na to jde koukat také jinak: To, že jsou privátní metody nevirtuální, je spíše jen pouhý důsledek Java pravidel. Java rozdělení metod na virtuální a nevirtuální v podstatě nezná, takže klidně se na to můžeme koukat tak, že všechny metody jsou virtuální. Když se volá metoda, tak se najdou metody, které jsou accessibile, a z nich se nějaká vybere. Podobně při deklaraci metody - projdou se accessibile metody v předcích a pokud je tam nějaká se stejnou signaturou, provede se její overriding. Pokud se například v abstraktní třídě deklaruje metoda
abstract void foo(), tak jediný, kdo ji bude moci implementovat, budou třídy ze stejného balíčku, protože jiné třídy prostě tuto metodu neuvidí. A přitom
foo() virtuální jistě je.