Declaração da classe privada [duplicado]

possível duplicado:
Java: por que podemos definir uma classe de alto nível como privada?

Porque não podemos declarar uma classe exterior privada? Se podemos ter classe privada interna, porque não podemos ter classe privada externa?..?

Author: Community, 2013-02-04

6 answers

A classe exterior privada seria inútil, pois nada pode aceder-lhe.

Ver Mais Detalhes:

Java: por que podemos definir uma classe de alto nível como privada?

 20
Author: Amit, 2017-05-23 10:31:27

Para responder à tua pergunta:

Se podemos ter classe privada interna, porque não podemos ter aula particular...?

Você pode, a distinção é que a classe interna está no nível de acesso "classe", enquanto a classe "exterior" está no nível de acesso "pacote". Dos tutoriais do Oráculo:

Se uma classe não tem modificador( o padrão, também conhecido como package-private), é visível apenas dentro do seu próprio pacote (os pacotes são chamados grupos de classes relacionadas-você aprenderá sobre eles em uma lição posterior.)

Assim, package-private (declarando nenhum modificador) é o efeito que você esperaria de declarar uma classe "exterior" privada, a sintaxe é apenas diferente.

 10
Author: stevebot, 2013-02-04 18:37:07

private modificador vai tornar sua classe inacessível de fora, para que não haveria nenhuma vantagem disso e eu acho que é por isso que é ilegal e só public, abstract & final são permitidos.

Nota: nem mesmo tu consegues fazer isso protected.

 7
Author: Subhrajyoti Majumder, 2016-12-09 20:01:13
Podes.
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`
}
 4
Author: OldCurmudgeon, 2016-06-14 01:37:53

Você não pode ter private classe, mas você pode ter second classe:

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();
    }
}

Lembre-se também que static a classe interior é indistinguível da classe separada, excepto que o seu nome é OuterClass.InnerClass. Então, se você não quiser usar "fechamentos", use classe interna estática.

 2
Author: Suzan Cioc, 2013-02-04 18:14:21
O Privado torna a classe acessível apenas à classe em que é declarada. Se tornarmos toda a classe privada, ninguém de fora pode aceder à classe e torna-a inútil. A classe interna pode ser privada porque a classe externa pode aceder à classe interna onde, como não é o caso, se tornar a classe exterior privada.
 0
Author: Prabhakar, 2013-02-04 18:16:47