Declaração da classe privada [duplicado]
Porque não podemos declarar uma classe exterior privada? Se podemos ter classe privada interna, porque não podemos ter classe privada externa?..?possível duplicado:
Java: por que podemos definir uma classe de alto nível como privada?
6 answers
Ver Mais Detalhes:
Java: por que podemos definir uma classe de alto nível como privada?
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.
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
.
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`
}
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.