Объявление частного класса

Возможный дубликат:
Java: Почему мы можем определить класс верхнего уровня как закрытый?

Почему мы не можем объявить внешний класс private? Если у нас может быть внутренний частный класс, то почему у нас нет внешнего частного класса...?

Ответы

Ответ 2

Чтобы ответить на ваш вопрос:

Если у нас может быть внутренний частный класс, то почему мы не можем иметь внешний частный класс...?

Вы можете, различие состоит в том, что внутренний класс находится на уровне доступа класса, тогда как "внешний" класс находится на уровне доступа "пакет". Из Учебники Oracle:

Если класс не имеет модификатора (по умолчанию, также называемого package-private), он виден только в пределах его собственного пакета (пакеты называются группами связанных классов - вы узнаете о них на более позднем уроке.)

Таким образом, package-private (без модификатора) - это эффект, который вы ожидаете от объявления "внешнего" класса private, синтаксис просто отличается.

Ответ 3

private модификатор сделает ваш класс недоступным извне, поэтому не будет никакого преимущества этого, и я думаю, что поэтому он является незаконным и разрешены только public, abstract и final.

Примечание. Даже вы не можете сделать это protected.

Ответ 4

Вы можете.

package test;

public class Test {
    public static void main(String[] args) {
        B b = new B();
    }
}

class B {
  // Essentially private - cannot be accessed anywhere else but inside `test`
}

Ответ 5

У вас не может быть класса private, но вы можете иметь класс second:

public class App14692708 {
    public static void main(String[] args) {
        PC pc = new PC();
        System.out.println(pc);
    }
}

class PC {
    @Override
    public String toString() {
        return "I am PC instance " + super.toString();
    }
}

Также помните, что внутренний класс static неотличим от отдельного класса, за исключением того, что имя OuterClass.InnerClass. Поэтому, если вы не хотите использовать "закрытие", используйте статический внутренний класс.

Ответ 6

private делает класс доступным только для класса, в котором он объявлен. Если мы сделаем весь класс закрытым, никто извне не сможет получить доступ к классу и сделает его бесполезным.

Внутренний класс можно сделать приватным, потому что внешний класс может получить доступ к внутреннему классу, где это не так, если вы делаете внешний класс закрытым.