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); } } |
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.
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 String
con la referencia r
, el cual es asignado un valor inicial de "Radio: "
.
El primer método llamado agrega
, toma como valor de entrada un String
y 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 String r
el cual es el campo definido en la Clase.
Los métodos frecuencia, volumen
y modelo
hacen uso del método agrega
concatenando distintos valores.
Finalmente el método imprimir
hace uso de la Clase System.out.println
para enviar a pantalla el valor del String r
(el campo de la Clase).
En el método principal ( main
) se genera una instancia de la Clase Radio
, 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.
Al definir esta Clase se utiliza el vocablo extends
que implica Herencia ("Inheritance"), seguido de éste se indica la Clase que será heredada ("Inherited"), en este caso Radio
.
El primer método definido se llama volumen
, nótese que en la Clase Radio
tambié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 vocablo super
indica una llamada hacia la Clase Base (Radio
), a través de esta linea se esta realizando una llamada hacia el método volumen
definido en Radio
; el vocablo super
es 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étodo agrega
.
Dentro del método principal main
se genera una instancia de la Clase MiniComponente
, 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 main
se realiza una llamada hacia el otro método main
definido en la Clase Radio
.
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
.