Как мы уже знаем, поле, определенное в классе с использованием частного ключевого слова, может быть доступно только в том же классе и невидимо для внешнего мира.
Так что же произойдет, если мы определим класс private, этот класс будет доступен только внутри сущности, в которой он определен, который в нашем случае является его пакетом?
Рассмотрим ниже пример класса А
package com.example;
class A {
private int a = 10;
// We can access a private field by creating object of same class inside the same class
// But realy no body creates object of a class inside the same class
public void usePrivateField(){
A objA = new A();
System.out.println(objA.a);
}
}
Поле "a" объявлено как закрытое внутри класса "A", и из-за этого поле "a" становится приватным для класса "A" и может быть доступно только внутри "A". Теперь давайте предположим, что нам разрешено объявить класс «A» как закрытый, поэтому в этом случае класс «A» станет частным для пакета «com.example» и не будет доступен извне пакета.
Таким образом, определение частного доступа к классу сделает его доступным в том же пакете, который ключевое слово по умолчанию уже делает для нас, поэтому нет никакого преимущества в определении частного класса, это только сделает вещи двусмысленными.
Вы можете прочитать больше в моей статье Почему внешний класс Java не может быть закрытым или защищенным .