¿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