1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/*
* Ce programme définit les trois types de classes interieures :
* statiques , non statiques et locales.
* après compilation et execution on obtient :
* Une classe interne statique
*Une classe interne
*Une classe interne locale
*/
public class Outer {
public static void main(String [] args){
StaticInner inner = new StaticInner();
new Outer().new Inner();
/*
* deuxieme façon possible d'instanciation de la classe Inner
*/
//Outer outer = new Outer();
//Inner inner = outer.new Inner();
//Classes interieures locales
final String s = "Une classe interne locale";
class Local{
Local(){
System.out.println(s);
}
}
new Local();
/*
*elles sont définies dans un bloc de code
*Elles sont pas liées à une instance d'une classe externe
*Ne peuvent accéder qu'aux variables locales ou aux paramètres de méthodes
* du bloc de code dans lequel elles sont définies
* Ne peuvent accéder qu'à des variables ou des paramètres déclarés comme final
* et qui on reçu une valeur
*/
}
Outer(){
//new Inner();
}
static class StaticInner {
//pour instancier ce genre de classe il n'y a pas besoin d'avoir une instance de
// la classe Outer
StaticInner(){
System.out.println("Une classe interne statique ");
}
StaticInner(String test){
System.out.println(test);
}
}
/*
* Classe interne non statique : création des objets qui sont des instances de la classe
* chaque instance est associée à une instance de la classe exterieure dans laquelle
* elle est déclarée , ici Outer. l'existece ce Outer est necéssaire à la création d'une instance de Inner.
*/
class Inner{
// Pour instancier ce type de classes il faut avoir une instance de
// la classe Outer.
Inner(){
System.out.println("Une classe interne ");
}
}
} |
Partager