Déclaration de classe privée [duplicate]


Duplicata Possible:
Java: Pourquoi pouvons-nous définir une classe de premier niveau comme privée?

Pourquoi ne pouvons-nous pas déclarer une classe externe privée? Si nous pouvons avoir une classe privée interne, alors pourquoi ne pouvons-nous pas avoir une classe privée externe...?

Author: Community, 2013-02-04

6 answers

La classe externe privée serait inutile car rien ne peut y accéder.

Voir plus de détails:

Java: Pourquoi pouvons-nous définir une classe de premier niveau comme privée?

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

Pour répondre À votre question:

Si nous pouvons avoir une classe privée interne, alors pourquoi ne pouvons-nous pas avoir une classe externe privé de classe...?

Vous pouvez, la distinction est que la classe interne est au niveau d'accès" classe", alors que la classe" externe "est au niveau d'accès" package". À partir des tutoriels Oracle :

Si une classe n'a pas de modificateur (la valeur par défaut, également connue sous le nom de package-private), elle n'est visible que dans son propre package (les packages sont nommés groupes de classes connexes - vous apprendrez à leur sujet dans une leçon ultérieure.)

Ainsi, package-private (ne déclarant aucun modificateur) est l'effet que vous attendez de déclarer une classe "externe" privée, la syntaxe est juste différente.

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

private modificateur fera de votre classe inaccessible de l'extérieur, donc il n'y aurait aucun avantage de cela et je pense que c'est pourquoi il est illégal et seulement public, abstract & final sont autorisés.

Remarque : Même vous ne pouvez pas le faire protected.

 7
Author: Subhrajyoti Majumder, 2016-12-09 20:01:13

Vous pouvez.

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

Vous ne pouvez pas avoir de private classe, mais vous pouvez avoir 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();
    }
}

Rappelez-vous également que static la classe interne est indiscernable de la classe distincte sauf que son nom est OuterClass.InnerClass. Donc, si vous ne voulez pas utiliser de "fermetures", utilisez une classe interne statique.

 2
Author: Suzan Cioc, 2013-02-04 18:14:21

Private rend la classe accessible uniquement pour la classe dans laquelle elle est déclarée. Si nous rendons toute la classe privée, personne de l'extérieur ne peut accéder à la classe et la rend inutile.

La classe interne peut être rendue privée car la classe externe peut accéder à la classe interne où comme ce n'est pas le cas si vous rendez la classe externe privée.

 0
Author: Prabhakar, 2013-02-04 18:16:47