
package ejemploclaseslocales;

public class ClaseGlobal {
    
    int atributoGlobal = 5;
    
    class ClaseLocal {
        int atributoClaseLocal = 0;
        
        void incrementarAtributoClaseLocal() {
            atributoClaseLocal++;
        }
        
        void visualizarAtributoClaseLocal() {
            System.out.println("--- ClaseLocal ---");
            System.out.println("el valor del atributo en Clase Local es : "+atributoClaseLocal);
            System.out.println("el valor del atributo Global es : "+atributoGlobal);
        }     
    }
    
    void visualizar() {
        ClaseLocal claseLocal = new ClaseLocal();
        claseLocal.incrementarAtributoClaseLocal();
        claseLocal.visualizarAtributoClaseLocal();
    }        

    void alojarClaseLocalAMetodo() {
        
        class ClaseLocalAMetodo {
            int atributoClaseLocalAMetodo = 150;
        
            void incrementarAtributoClaseLocalAMetodo() {
                atributoClaseLocalAMetodo++;
            }
            
            void visualizarAtributoClaseLocalAMetodo() {
                System.out.println("--- ClaseLocalAMetodo ---");
                System.out.println("el valor del atributo en Clase Local a método es : "+atributoClaseLocalAMetodo);
                System.out.println("el valor del atributo Global es : "+atributoGlobal);
            }
        }
        
        ClaseLocalAMetodo claseLocalAMetodo = new ClaseLocalAMetodo();
        claseLocalAMetodo.incrementarAtributoClaseLocalAMetodo();
        claseLocalAMetodo.visualizarAtributoClaseLocalAMetodo();
    }    
    
    void alojarClaseLocalABloqueInstruccion() {
        
        if (true)
        {
            class ClaseLocalABloqueInstruccion {
                int atributoClaseLocalABloqueInstruccion = 157;
        
                void incrementarAtributoClaseLocalABloqueInstruccion() {
                    atributoClaseLocalABloqueInstruccion++;
                }
                
                void visualizarAtributoClaseLocalABloqueInstruccion() {
                    System.out.println("--- ClaseLocalABloqueInstruccion ---");
                    System.out.println("el valor del atributo en Clase Local a Bloque Instrucción es : "+atributoClaseLocalABloqueInstruccion);
                    System.out.println("el valor del atributo Global es : "+atributoGlobal);
                }
            }
            
            ClaseLocalABloqueInstruccion claseLocalABloqueInstruccion = new ClaseLocalABloqueInstruccion();
            claseLocalABloqueInstruccion.incrementarAtributoClaseLocalABloqueInstruccion();
            claseLocalABloqueInstruccion.visualizarAtributoClaseLocalABloqueInstruccion();
        }
    }  
}
