Seguidores

MIS WEBS



domingo, 31 de diciembre de 2017

CLASE INTERNA LOCAL java



Es una clase dentro de un método. Nos resultarán útiles cuando se instancien tan solo una vez. Se utilizarán para simplificar nuestro código.  El ámbito de esa clase quedará restringido al método al que pertenece, por lo que quedará encapsulada.

SINTAXIS

class Clase_1ª{
public void método() {
class clase_2º_local{//la clase dos no lleva modificador
Código clase 2ª…
}
Código clase método…
}
Código clase 1ª…
}


Ejemplo


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;

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() {
__________________________________________________
//clase interna
*******************************************************
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();}
}
}
**************************************************
Código método
ActionListener oyente = new clase2();
Timer miTemporizador = new Timer(intervalo,oyente);
miTemporizador.start();
}
*******************************************************
Código clase_1
private int intervalo;
private boolean sonido;
}





Una clase interna nos permite acceder a las variables del método, esto nos permite pasarle por parámetros las variables y simplificar nuestro código. La variable que pasemos por parámetros a la clase interna y vallamos a utilizar tendremos que pasarla como final.


ejercicio 2.

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) {
Reloj miReloj = new Reloj();
miReloj.Arranca(5000,true); 
JOptionPane.showMessageDialog(null, "SI TOCAS ACCEPTAR PARARAS EL RELO");
System.exit(0);
}
}
class Reloj{//clase1ª
public void Arranca(int intervalo, final boolean sonido) {
class clase2 implements ActionListener{
public void actionPerformed(ActionEvent evento) {
Date HoraActual = new Date();
System.out.println("hora Actual: " + HoraActual);
if (sonido) { Toolkit.getDefaultToolkit().beep();}
}

}

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital