Seguidores

MIS WEBS



domingo, 31 de diciembre de 2017

CLASE INTERNA O ANIDADA EN JAVA





¿Qué son?
Una clase interna es una clase dentro de otra. Fueron introducidas en la versión 1.1 y son conocidas en inglés como Inner Class (clase interna) o Nested Class (clase anidada).
Una clase interna conoce los detalles de la clase contenedora y puede comunicarse con ella. Además el tipo de código que puede escribirse con las clases internas es más elegante y claro.
Una clase anidada siempre la declararemos como private.

¿Para qué sirve?

• Para acceder a los campos privados de una clase desde otra clase
• Para ocultar una clase de otras pertenecientes al mismo paquete, con esto conseguiremos encapsular nuestra clase interna.
• Para crear clases internas “anónimas”, nos pueden resultar útiles para gestionar eventos retro llamadas.
• Cuando solo una clase debe acceder a los campos de ejemplar de otra clase.
• Creando clases internas nos ahorramos generar métodos getters y setters.

EJERCICIO.

package poo; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import java.util.*;
import javax.swing.*;import javax.swing.Timer;
public class claseInterna {
     public static void main(String[] args) {
         //instanciamos la clase reloj
         Reloj miReloj = new Reloj(5000,true);
         miReloj.Arranca();         
JOptionPane.showMessageDialog(null, "SI TOCAS ACCEPTAR PARARAS EL RELO");
     }
}

class Reloj{//clase1ª
     //Constructior de reloj pasando por parametros
     public Reloj(int intervalo,boolean sonido) {  
         this.intervalo=intervalo;
         this.sonido=sonido;
     }   
     //metodo setter establecer con action listener imprencindible para aplicar la interface timer
     public void Arranca() {
ActionListener oyente = new clase2();
Timer miTemporizador = new Timer(intervalo,oyente);
         miTemporizador.start();
     }
     private int intervalo;
     private boolean sonido;
    
     private class clase2 implements ActionListener{
     public void actionPerformed(ActionEvent evento) {
              Date HoraActual = new Date();
             
     System.out.println("hora Actual: " + HoraActual);
              // en un bolean no hace falta == ni poner las dos conciones se sobreentiende que si lo ponemos asi es verdadero y si no no hace nada
     if (sonido) { Toolkit.getDefaultToolkit().beep();
}
         }
     }
}

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital