3.4 CLASES INTERNAS LOCALES

 

Las clases internas locales son:

·         Una clase dentro de un método.

·         ¿Cuándo se utilizan estos tipos de clases y por qué?

o   Son útiles cuando solo se va a utilizar (instanciar) la clase interna una vez. El objetivo es simplificar aún más el código.

o   Su ámbito queda restringido al método donde son declaradas. ¿Ventajas?

§  Están muy “encapsuladas”. Ni siquiera la clase a la que pertenecen puede acceder a ella. Tan solo puede acceder a ella el método donde están declaradas.

§  El código resulta más simple.

La forma de declarar la clase interna local es la siguiente:

      class clase_externa{

            public void método(){

                  class clase_interna_local{

                        código de la clase interna;

                  }

            código del método;

            }

      código de la clase externa;

      }

Las clases internas locales no deben llevar ningún modificador de acceso. Seguimos con el ejemplo PruebaTemporizador2.java, si seleccionamos la clase interna, la cortamos y la pegamos dentro del método:

public void enMarcha(int intervalo, final boolean sonido) {

           

            class DameLaHora2 implements ActionListener{

 

                  @Override

                  public void actionPerformed(ActionEvent e) {

                       

                        Date ahora = new Date();

                       

                        System.out.println("Te muestro la hora cada 3 seg. "+ahora);

                       

                        if(sonido) {

                            

                             Toolkit.getDefaultToolkit().beep();

                        }

                       

                  }

 

            }

            ActionListener oyente = new DameLaHora2();

           

            Timer mitemporizador = new Timer(intervalo, oyente);

           

            mitemporizador.start();

           

      }

     

 

}

           

Esta clase interna puede utilizar los métodos de la clase padre, incluso las variables. Sin embargo, la clase padre no es accesible a los métodos y variables de esta clase.

Con el código de esta forma, podemos prescindir de las variables:

private int intervalo;

     

private boolean sonido;

Y pasarlas como parámetros en el método:

public void enMarcha(int intervalo, boolean sonido)

Hay que tener en cuenta que si utilizamos estas variables locales dentro de la clase local hay que declararlas como final:

public void enMarcha(int intervalo, final boolean sonido)

También podemos prescindir del constructor de la clase Reloj:

class Reloj {

     

      public Reloj(int intervalo, boolean sonido) {

           

            this.intervalo = intervalo;

           

            this.sonido = sonido;

      }

Lo que esta sombreado en amarillo lo eliminamos. En el método main:

public static void main(String[] args) {

           

            Reloj mireloj = new Reloj();

           

            mireloj.enMarcha(3000, true);

           

            JOptionPane.showMessageDialog(null, "Pulse Aceptar para terminar");

           

            System.exit(0);

 

      }

Instanciamos la clase Reloj aunque hallamos eliminado el constructor siempre hay un constructor por defecto aunque no lo hallamos creado, en lugar de pasar los parámetros al constructor, pasamos los parámetros al método.


3.3 CLASES INTERNAS << >> 4.1 INTRODUCCIÓN A LAS APLICACIONES GRÁFICAS



No hay comentarios:

Publicar un comentario