| En base a su ambiente, abra un Editor de Textos para generar el siguiente ejemplo. |
Código Fuente MiniComponente.java
class Radio {
private String r = new String("Radio: ");
public void agrega(String a) { r += a; }
public void imprimir() { System.out.println(r); }
|
public void frecuencia() { agrega(" frecuencia() "); }
public void volumen() { agrega(" volumen() "); }
public void modelo() { agrega(" modelo() "); }
public static void main(String[] args) {
Radio x = new Radio();
x.frecuencia() ; x.volumen(); x.modelo();
x.imprimir();
}
}
|
public class MiniComponente extends Radio {
// Cambiar el metodo ("Override")
public void volumen() {
agrega( " MiniComponente.volumen() ");
super.volumen(); // Llamar la version de la Clase Base
}
// Agregar metodo
public void equalizador() { agrega(" equalizador() "); }
public static void main(String[] args) {
MiniComponente x = new MiniComponente();
x.frecuencia();
x.volumen();
x.modelo();
x.equalizador();
x.imprimir();
System.out.println("Probar la Clase Base: ");
Radio.main(args);
}
}
|
Definición de Dos Clases y Herencias ("Inheritance").
Como se puede observar, han sido definidas dos Clases en el mismo archivo fuente llamado MiniComponente.java, el hecho que existan dos Clases en el mismo archivo fuente no influye en ningún factor, en este caso se opto por dicho diseño debido a razones didácticas, aunque bien se pudo haber realizado el diseño de este manera por razones administrativas, de cualquier manera, nótese que se sigue cumpliendo la característica de una Clase Java: debe ser definida al menos una Clase con el mismo nombre del archivo fuente.
Entrando al problema espacial ("real"), es posible afirmar que todo MiniComponente incluye un Radio (AM/FM) entre sus dispositivos , debido a esto se ha decidido reutilizar(Heredar) el comportamiento de una Clase Base de Radio, a continuación se describe la Clase Radio.
Clase Radio.
Como cualquier Clase Java se utiliza el vocablo
class, sin embargo, no se utiliza ningún calificador de acceso, por lo que esta Clase solo será accesible internamente (O al paquete "package" si fuera incluida en alguno );esto es lo que se refiere como acceso amigable, descrito en la sección de Calificadores.Se define un campo tipo
Stringcon la referenciar, el cual es asignado un valor inicial de"Radio: ".El primer método llamado
agrega, toma como valor de entrada unStringy su función es concatenar diversos String's, nótese que se utiliza el operador+=; a través de este operador es posible concatenar diversos elementos, en esta definición se esta declarando que el String de entrada (a) debe ser concatenado con el Stringrel cual es el campo definido en la Clase.Los métodos
frecuencia, volumenymodelohacen uso del métodoagregaconcatenando distintos valores.Finalmente el método
imprimirhace uso de la ClaseSystem.out.printlnpara enviar a pantalla el valor del Stringr(el campo de la Clase).En el método principal (
main) se genera una instancia de la ClaseRadio, posteriormente a través de la respectiva referencia se mandan llamar los distintos métodos de la Clase.
Una vez compilado el código fuente, es posible ejecutar la Clase Radio a través del comando java Radio y observar los resultados iniciales.
Clase MiniComponente.
Al definir esta Clase se utiliza el vocablo
extendsque implica Herencia ("Inheritance"), seguido de éste se indica la Clase que será heredada ("Inherited"), en este casoRadio.El primer método definido se llama
volumen, nótese que en la ClaseRadiotambién existe un método con este nombre, dentro de esta Clase se esta modificando el comportamiento de dicho método, esto es conocido como override en lenguajes orientados a Objetos.Dentro de este mismo método, inicialmente se hace una llamada al método
agrega, si observa el resto de la composición de esta Clase notará que no existe ninguno por este nombre, sin embargo, dentro de la Clase Base existe dicho método, en este caso se esta haciendo uso de los métodos de la Clase Base.La segunda llamada en este método es:
super.volumen, el vocablosuperindica una llamada hacia la Clase Base (Radio), a través de esta linea se esta realizando una llamada hacia el métodovolumendefinido enRadio; el vocablosuperes utilizado en los casos donde surge una ambigüedad de nombres entre la Clase heredada y base.Se define un método nuevo llamado
equalizador, que también hace uso del métodoagrega.Dentro del método principal
mainse genera una instancia de la ClaseMiniComponente, seguido de diversas llamadas a distintos métodos, nótese que aquellos no definidos dentro de la Clase, son llamados con la implementación de la Clase Base.En el último paso del método
mainse realiza una llamada hacia el otro métodomaindefinido en la ClaseRadio.
Una vez compilado el código fuente, es posible ejecutar la Clase MiniComponente a través del comando java MiniComponente y observar los resultados iniciales así como las variaciones de comportamiento en la Clase Radio.
