Ich blicke nicht so richtig dahinter, da das für mich ein totales wirwar ist, was aus meiner Sicht irgendwie keinen Sinn macht. (Ich komme von c++).
Wenn ich eine Klasse definieren will die öffentlich von einem anderen Paket aus zugreifbar ist, dann muss ich ein "public" vor der Klassendefinition setzten. Soweit so gut, aber warum muss ich, wenn ich Memberfunktionen habe die sich in der "public" Klasse befinden diese auch noch mit "public" declarieren, wenn ich auf sie außerhalb des Pakets zugreifen will ? Ist das nicht total "doppelt" ?
In C++ ist es einfach so, man erstellt eine Klasse mit privatem und öffentlichem bereich. Privat heißt man kann von außerhalb nicht zugreifen, öffentlich heißt man kann es.
Was deckt Java mit public, private, protectet, und "default" also gar kein keyword denn zusätzlich ab, und was ist daran gut ?