Sunteți pe pagina 1din 8

18/10/2018 CoDejaVu: Herencia en Java

Inicio Acerca De... ¿Que es CoDejaVu? Indice de Contenido VideoTutoriales Java SE y Otros VideoTutoriales Android VideoTutoriales Java

m artes, 21 de m ayo de 2013 Buscar este blog

Herencia en Java Busca

En esta ocasión vamos a profundizar un poco (desde el Contacto


enfoque de programación, no teórico) en uno de los
principales conceptos de programación orientada a objetos Cristian Henao
Seguir 1.340
en java...............el concepto de Herencia, vamos a realizar
un ejemplo practico para verificar su funcionamiento y Ingeniero de
aplicación en el desarrollo de software. Sistemas y
Computación (Universidad del
Como se mencionó en la entrada anterior, básicamente mediante este concepto Quindío - Colombia)
podemos obtener las características de una clase padre o de una jerarquía Tecnólogo en Análisis y Desarro
mayor dependiendo de nuestro árbol de herencia, en java definimos esta de los Sistemas de Información
(Sena Quindío).
jerarquía mediante la palabra extends seguido del nombre de la clase a la que
Especialista Tecnológico en
vamos a heredar, también se debe tener claro que solo se puede heredar de una
desarrollo de Aplicaciones
sola clase pues el lenguaje no permite la Herencia múltiple (En Java por defecto móviles - Android
todas las clases heredan de la clase Object, es decir, esta es la clase Padre de
todas las clases en Java). Blog :
http://codejavu.blogspot.com/
Antes de continuar, les comparto este video donde podràn complementar el Facebook:
concepto mediante otro ejemplo practico diferente al de esta entrada... https://www.facebook.com/co
ejavu
Google+:
https://plus.google.com/u/0/+C
istianDavidHenaoHoyos
youtube: http://goo.gl/IiPNSy
Twitter : @chenaooo
Linkedin :
http://www.linkedin.com/pub/c
stian-david-henao-
hoyos/69/b90/84a
Ver todo mi perfil

Suscribete!!! Quieres seguir est


blog? Participa en el sitio

Requisitos. Seguidores (267) Siguiente

Lo único que necesitamos para hacer el ejemplo practico es un entorno de


desarrollo, conocer los conceptos de POO (vistos en la entrada anterior) y ganas
de continuar :P para este caso usaremos el IDE Eclipse...........Empecemos.

El Ejemplo.

Seguir
Conociendo el concepto de clases y objetos vamos a asumir que necesitamos
construir una aplicación sobre los diferentes tipos de vehículos existentes, pero
para esto necesitamos clasificarlos, en este caso trabajaremos con vehículos
acuáticos y aéreos.

Contactos G+
Teniendo como punto de partida la información anterior podemos empezar a
definir nuestras clases, vamos a trabajar con vehículos acuáticos y vehículos
aéreos, entonces......... cual es el factor común de estos 2
tipos?..............................................

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 1/8
18/10/2018 CoDejaVu: Herencia en Java
El factor común es que sin importar si es un avión o un barco, estamos hablando Cristian Henao
de vehículos, y ambos pueden compartir características comunes por esta razón Añadir a círculos
la Clase principal de nuestro sistema sera la clase Vehiculo.

Partiendo de lo anterior podemos profundizar aun mas en nuestro árbol de


herencia, sabemos que un barco o un avión son vehículos, pero será que esta
información es suficiente???.......... sería correcto decir que ¿un barco es igual a
un avión porque ambos son vehículos?..........definitivamente NO, ya que si bien
descienden del mismo concepto de vehículo ambos tienen características
propias que los diferencian, aquí es donde tenemos que pensar de forma general
para poder definir un correcto árbol de herencia, por eso podemos decir que un
barco además de descender de un vehículo, también desciende del tipo de 1.340 me tienen en sus círculos. Ver t
vehículos Acuáticos los cuales tienen un conjunto de características comunes
para cualquier vehículo acuático (sin olvidar que cada vehículo acuático puede
tener sus características propias) y de la misma forma un avión desciende del Historial CoDejaVu
tipo de vehículos Aéreos (con la misma lógica del anterior)............tenemos así
► 2018 (11)
nuestras clases Acuatico y Aereo que a su vez descienden de la clase
Vehiculo, y son padres de cualquier vehículo en su jerarquía. ► 2017 (15)

► 2016 (4)
Al final tenemos definida nuestra estructura de clases (para este ejemplo no
► 2015 (4)
entraremos en detalles sobre las características a profundidad de cada clase,
pero si alguna básica para resaltar el concepto) así: ► 2014 (17)
▼ 2013 (59)
► diciembre (2)

► noviembre (2)
► octubre (4)

► septiembre (4)

► agosto (4)

► julio (3)
► junio (8)

▼ mayo (18)
Polimorfismo en Java
Interfaces en Java
Clases Abstractas
Clases en Java
Herencia en Java
Como vemos, la Clase Padre es Vehiculo, la cual tiene como hijas a las clases
Acuatico y Aereo, estas a su vez son clases Padre de Barco, Velero, Avion y Conceptos Básicos de
Programación Orientada
Helicoptero que a la vez son nietas de Vehiculo...Simple o ¿no? Obje...
¿ String Vrs StringBuffer Vr
Con esto ya tenemos una jerarquía de herencia definida, esto quiere decir que
StringBuilder ?
por ejemplo la clase Avion puede usar el método volar() de la clase Aereo, así
como también usar el método transportar() de la clase Vehiculo, pues se Comparando Fechas En
Java
encuentra en el mismo árbol de herencia, sin embargo no puede usar el método
navegar() de la clase Acuatico, ya que no es de tipo Acuatico. Agrupando Tareas en
Jenkins

Teniendo nuestro diagrama definido, vamos a aplicar el concepto en Java. Ejecutar Tareas En Jenkins
Adicionar Proyectos en
Vehiculo. Jenkins
Clase Padre. Creación de Usuarios en
Jenkins
1 /**
2 * @author HENAO Opciones de Seguridad en
3 * Jenkins
4 */ Instalación Jenkins en
5 public class Vehiculo { Windows.
6
7 public int modeloVehiculo; Integración Continua,
8 Primeros Pasos Con
9 public String nombreVehiculo=""; Jenkins
10
11 public String transportar(){ Instalación JDK
12 return "Metodo transportar de clase Vehiculo"; Leer Archivo Properties en
13 } Java
14 }
Despliegue de Aplicación
Web Con Ant

► abril (14)

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 2/8
18/10/2018 CoDejaVu: Herencia en Java
Acuatico.
SubClase extiende de Vehiculo.
Categorias
1 public class Acuatico extends Vehiculo{
Abstract (2) Abstract Factory (
2
3 public String nombreAcuatico=""; Adapter (2) Apache Ant (
4 continuous integration (6) contr
5 public String navegar(){ de versiones (3) Eclipse (15
6 return "Método navegar de clase Acuatico"; Excepciones (1) google code (
7 } Herencia (4) Integración continu
8
9 } java (23
(6) Interface (3)
Java Swing (27) jbo
(5) jboss seam (3) Jboss Tools (
Aereo. JDialog (3) JDK (4) Jenkins (7
SubClase extiende de Vehiculo. JSF (14) MVC (3) MySql (

1 public class Aereo extends Vehiculo {


Observer (2) Patrones d
2 Diseño (8) PerGem space (
3 public String nombreAereo=""; Plugin (4) Polimorfismo (
4 Programación Orientada
5 public String volar(){ Objetos (8) Properties (
6 return "Método volar desde clase Aereo";
repositorio (3) seam gen (
7 }
8 } Singleton (2) svn (5)

Lo Mas Visto
Barco.
SubClase extiende de Acuatico. Ejemplo Modelo
Vista Controlador
1 public class Barco extends Acuatico { En la entrada sobr
2 patrones de Diseñ
3 public String prenderMotor(){ se habla sobre
4 return "Método prenderMotor en clase Barco"; el patrón MVC , en esta
5 } oportunidad vamos explicar u
6 } ejemplo practico donde se
apl...

Velero. Conceptos Básicos d


SubClase extiende de Acuatico. Programación
Orientada a Objetos
1 public class Velero extends Barco{ En esta entrada
2 veremos algunos conceptos
3 public String izarVelas(){ de la programación orientada
4 return "Método izarVelas en clase Velero"; a Objetos
5 } (POO)..................................
6 } ........... Muc...

Ejemplo
Clase Avion. JFileChooser
SubClase extiende de Aereo. Nuevamente
regreso con un
ejemplo práctico
1 public class Avion extends Aereo{
sobre uno de los componente
2
Java Swing .............. el día de
3 public String bajarTrenDeAterrizaje(){
hoy les traigo el JFileChooser
4 return "Método bajarTrenDeAterrizaje en clase Avion";
...
5 }
6 }
Ejemplo de
Polimorfismo En
Java
Clase Helicoptero. En esta entrada
SubClase extiende de Aereo. vamos a trabajar
un ejemplo rápido y simple
1 public class Helicoptero extends Aereo{ aplicando el concepto de
2 Polimorfismo , en el post
3 public String encenderHelices(){ anterior vimos algunas consi.
4 return "Método encenderHelices en clase Helicoptero";
5 } Ejemplo
6 } JOptionPane
Nuevamente
después de otra
Como vemos seguido del nombre de la clase se tiene la palabra extends la cual semana muy
indica que se extiende o hereda de la clase definida, así mismo todas las clases pesada sin poder darle vuelta
al Blog, regreso para finalizar
tienen al menos un método que representa la característica propia de la clase, la secuencia de entradas sobr
para las clases hijas ese método define el proceso que solo ellas pueden realizar, Java Swi...
para las clases padre, ese método define el proceso que es común o general
para las clases hijas. ¿Eclipse o
Netbeans?
Hola, en esta
Ahora veremos como funciona la herencia en nuestra aplicación. oportunidad quiero

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 3/8
18/10/2018 CoDejaVu: Herencia en Java
hacer un break en las entrada
sobre Java
Creamos una clase Principal donde se realizarán las operaciones, podemos crear
Swing.......................... ¿Y
instancias de las clases y verificar el nivel de acceso que tenemos a las Porqué?........... porque a...
características tanto de nuestra clase como de nuestra Jerarquía de Herencia,
así. Como crear
Interfaces Graficas
en Eclipse con
WindowBuilder
Después de mucho
meditarlo, voy a explicarles
cómo crear aplicaciones con
interfaz gráfica desde Eclipse
similar a como se hace en ...

Ejemplo Eventos
del Teclado en Jav
En la entrada
anterior tocamos
tema de los
eventos del Mouse, en esta
ocasión continuaremos
trabajando con Eventos pero
ahora del Tecla...
En la imagen vemos que tenemos una instancia de la clase Vehículo, esto lo
podemos traducir como la creación del objeto miVehiculo de tipo Vehiculo, Ejemplo
no olvidemos que esta clase es la clase padre, por eso al verificar los métodos Conectando Java
disponibles (En Eclipse después del punto hacemos Ctrl+espacio) vemos que con MySql
En esta entrada
nos aparecen las características propias de la clase, asi como otros métodos de
vamos a tocar uno
la clase Object (Recordemos que en java todas las clases heredan de Object) de los puntos fundamentales
que también podemos usar. en el desarrollo de software,
no vamos a entrar en detalles
de que es una B...

Comparando
Fechas En Java
En esta entrada
veremos uno de lo
procesos obligado
cuando se trabaja en este
campo del desarrollo de
Software, sin importar el
lenguaje q...

CoDejaVu!!!

CoDejaVu no es mas que la idea d


aportar un poco de conocimiento
Al crear otro objeto de la clase Acuatico y realizar el mismo proceso anterior,
colaboración a los que lo pueda
vemos que ahora tenemos no solo los métodos propios de la clase sino también
necesitar, y retribuir un poco de lo q
los métodos y atributos de la clase Vehiculo. he podido aprender...........no espe
que muchos sigan mis Entradas,
Ahora miremos un objeto de las clases Hijas. dejen comentarios, solo espero q
esto pueda ser de utilidad pa
alguien.........y si le sirve a alguien ma
porque no compartirlo?

Enlaces

Paperblog
Hace 4 semanas

Al crear un objeto de la clase Barco vemos que ahora no solo tenemos las
características de Barco sino también podemos hacer uso de las características
de Acuatico y de Vehiculo.

Este mismo principio aplica para la otra parte de nuestra jerarquía (Vehículos
Aéreos) donde como mencionamos anteriormente solo podemos acceder a los
métodos y atributos disponibles para ese árbol de herencia.

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 4/8
18/10/2018 CoDejaVu: Herencia en Java

Veamos todo nuestro código...

1 public class Principal {


2
3 /**
4 * @param args
5 */
6 public static void main(String[] args) {
7
8 System.out.println("**************************************************
9 System.out.println("* << CoDejaVu >>
10 System.out.println("*
11 System.out.println("**************************************************
12 System.out.println();
13 System.out.println("-------------------<< Clase Padre Vehiculo >>-----
14 Vehiculo miVehiculo = new Vehiculo();
15 miVehiculo.nombreVehiculo="El Gran Transportador";
16 System.out.println("usando miVehiculo, nombreVehiculo : "+miVehiculo.n
17 System.out.println("usando miVehiculo llama a: "+miVehiculo.transporta
18 System.out.println("--------------------------------------------------
19 System.out.println();
20
21 System.out.println("----------<< SubClase hija Acuatico Extiende de Ve
22 Acuatico miAcuatico= new Acuatico();
23 miAcuatico.nombreVehiculo="El Navegante";
24 System.out.println("usando miAcuatico, nombreVehiculo : "+miAcuatico.n
25 System.out.println("usando miAcuatico llama a : "+miAcuatico.transport
26 System.out.println("usando miAcuatico llama a : "+miAcuatico.navegar()
27 System.out.println("--------------------------------------------------
28 System.out.println();
29
30 System.out.println("-----<< SubClases hijas extienden de la Subclase P
31 Barco miBarco=new Barco();
32 miBarco.nombreVehiculo="Titanic";
33 System.out.println("usando miBarco, nombreVehiculo : "+miBarco.nombreV
34 System.out.println("usando miBarco llama a : "+miBarco.transportar());
35 System.out.println("usando miBarco llama a : "+miBarco.navegar());
36 System.out.println("usando miBarco llama a : "+miBarco.prenderMotor())
37 System.out.println();
38
39 Velero miVelero=new Velero();
40 miVelero.nombreVehiculo="Tormenta";
41 System.out.println("usando miVelero, nombreVehiculo : "+miVelero.nombr
42 System.out.println("usando miVelero llama a : "+miVelero.transportar()
43 System.out.println("usando miVelero llama a : "+miVelero.navegar());
44 System.out.println("usando miVelero llama a : "+miVelero.izarVelas());
45 System.out.println("--------------------------------------------------
46
47 System.out.println("----------<< SubClase hija Aereo Extiende de Vehic
48 Aereo miAereo= new Aereo();
49 miAereo.nombreVehiculo="El Volador";
50 System.out.println("usando miAereo, nombreVehiculo : "+miAereo.nombreV
51 System.out.println("usando miAereo llama a : "+miAereo.transportar());
52 System.out.println("usando miAereo llama a : "+miAereo.volar());
53 System.out.println("--------------------------------------------------
54 System.out.println();
55
56 System.out.println("-----<< SubClases hijas extienden de la Subclase P
57 Avion miAvion=new Avion();
58 miAvion.nombreVehiculo="El Condor";
59 System.out.println("usando miAvion, nombreVehiculo : "+miAvion.nombreV
60 System.out.println("usando miAvion llama a : "+miAvion.transportar());
61 System.out.println("usando miAvion llama a : "+miAvion.volar());
62 System.out.println("usando miAvion llama a : "+miAvion.bajarTrenDeAter
63 System.out.println();
64
65 Helicoptero miHelicoptero=new Helicoptero();
66 miHelicoptero.nombreVehiculo="El lobo del Aire";
67 System.out.println("usando miHelicoptero, nombreVehiculo : "+miHelicop
68 System.out.println("usando miHelicoptero llama a : "+miHelicoptero.tra
69 System.out.println("usando miHelicoptero llama a : "+miHelicoptero.vol
70 System.out.println("usando miHelicoptero llama a : "+miHelicoptero.enc
71 System.out.println("--------------------------------------------------
72 System.out.println();
73
74 System.out.println("--<< Propiedad de la clase Vehiculo usada por toda
75 System.out.println("nombre Vehiculo :"+miVehiculo.nombreVehiculo);
76 System.out.println("nombre Acuatico :"+miAcuatico.nombreVehiculo);
77 System.out.println("nombre Aereo :"+miAereo.nombreVehiculo);
78 System.out.println("nombre Barco :"+miBarco.nombreVehiculo);
79 System.out.println("nombre Velero :"+miVelero.nombreVehiculo);
80 System.out.println("nombre Avion :"+miAvion.nombreVehiculo);
81 System.out.println("nombre Helicoptero :"+miHelicoptero.nombreVehiculo
82 System.out.println("--------------------------------------------------
83

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 5/8
18/10/2018 CoDejaVu: Herencia en Java
84 }
85 }

Con este ejemplo hacemos el llamado a los métodos tanto propios como
heredados de las clases padres, obteniendo el siguiente resultado.

Como vemos podemos acceder a los diferentes métodos desde otras clases, y si
nos fijamos bien podemos identificar que siempre usamos la misma propiedad
nombreVehiculo de la clase Vehiculo, lo hicimos usando objetos diferentes
por tal razón el valor de la propiedad depende del asignado por cada objeto,
convirtiéndose en un atributo del objeto y no de la clase como tal.

Conclusión

Podemos ver que la herencia va ligada a muchos otros conceptos, vimos el


concepto de clase, el concepto de objetos entre otros, en este caso también es
importante conocer el concepto de encapsulación ya que como compartimos
características entre clases tenemos que estar seguros que la clase que accede
puede usarlas, aunque mas adelante trataremos este tema a
profundidad.........espero que esta entrada sea útil y fácil de entender......

También te podría Interesar.


Conceptos Básicos de Programación Orientada a Objetos.
¿ String Vrs StringBuffer Vrs StringBuilder ?
Comparando Fechas En Java
Tutorial Aplicaciones Web con Jboss Seam
Instalación del servidor de aplicaciones JBoss
Configuración Ambiente de Desarrollo... Descarga de Eclipse
Trabajando con SVN desde Eclipse

¿Hay algo que quieras anexar o comentar sobre esta entrada? no dudes en

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 6/8
18/10/2018 CoDejaVu: Herencia en Java
hacerlo.....y si te gustó...... te invito a compartir y Suscribirte ingresando
al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)

Publicado por Cristian Henao

Etiquetas: Eclipse, Herencia, java, POO, Programación Orientada a Objetos

8 comentarios:

Anónimo 31 de marzo de 2014, 8:03


Hola, primero buen trabajo por tus explicaciones y por tu blog que es muy bueno.
Ahora una pregunta sobre herencia (que espero que me puedas contestar). He visto
muchas veces en herencia que cuando se hereda, al instanciar el objeto se coge
primero la clase más alta posible por ejemplo al instanciar un objeto de barco (en tu
ejemplo) sería así:

Vehiculo v1 = new Barco();

Y es algo que he preguntado mucho pero no me ha quedado muy claro, si es mejor


instanciar con la clase padre de todo o da igual con la misma clase:

Barco b1 = new Barco();

Porque otras veces me han dicho que para hacer un ArrayList() es mejor instanciarlo
de esta manera:

List lista = new ArrayList();

Ya que ArrayList hereda de List.

Me gustaría saber que es mejor o peor para instanciar algo, ya que habría que utilizar
instanceof posteriormente para saber de que tipo de objeto es.

Espero que hayas entendido mi duda y puedas contestarla (cuando puedas). Un


Saludo.
Responder

Respuestas

Cristian Henao 31 de marzo de 2014, 8:39


Hola, te cuento, la forma de como lo instancies, depende básicamente de lo
que necesites hacer... si intancias con la clase Vehiculo quiere decir que
necesitas heredar algo que esté en vehículo y por esa razón utilizas vehículo
como la superClase para de esa forma tener el objeto v1 con características
no solo del barco sino también de un vehículo.... por ende si instancias solo
como barco pues quiere decir que tendrás un barco solo con las
caracteristicas mínimas que necesites y que barco te provee.

Basados en lo anterior pasa lo mismo con List y ArrayList... existen métodos


propios de List que ArrayList no tiene, pero todo depende de las características
que necesites utilizar......

regresando con el ejemplo del Vehiculo y el Barco, a esa manera de instanciar


se le conoce como polimorfismo, por eso tu puedes tener un avión y un barco
que compartan la misma funcionalidad que exista en la clase Vehiculo (o si es
una interface también), por ejemplo arrancar() es una acción que ambos
realizan, entonces la puedes heredar, sea llamando al método o
implementandolo en cada clase......en este ultimo caso puede que pienses que
no tendría sentido, pero cuando son aplicaciones grandes esa pequeña acción
podría jugar un papel importante a nivel de rendimiento o tiempo de
ejecución..... un saludo y gracias por comentar ;) y en el indice de contenido
hay algo sobre polimorfismo que te puede aclarar mucho mas ;)
http://codejavu.blogspot.com/p/blog-page_12.html

Responder

Hugo Antonio 22 de junio de 2016, 11:28


Hola, entre a tu blog por casualidad, buscando entender un poco mas de herencia, ya
que soy un viejo programador o programador viejo (en mi caso es lo mismo

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 7/8
18/10/2018 CoDejaVu: Herencia en Java
jajajajajaja). Mi duda es por que todas las variables las dejaste en public y no armaste
sus respectivos set y get. Supongo que solo por una cuestion de hacerlo mas basico...
Gracias
Responder

Anónimo 10 de marzo de 2017, 11:31


no le entiendo nadita algien que pueda dar clases en lina dispuesto a pagar $500
Responder

Respuestas

claudisimo 5 de abril de 2017, 13:33


https://www.youtube.com/watch?
v=coK4jM5wvko&list=PLU8oAlHdN5BktAXdEVCLUYzvDyqRQJ2lk

Responder

claudisimo 5 de abril de 2017, 13:30


public class Velero extends Barco?????
Responder

Respuestas

Cristian Henao 5 de abril de 2017, 16:27


Hola, buscando la definición en google aparece esto: "[embarcación] Que es
muy ligero." osea que a modo de ejemplo si aplicaria, cual seria la inquietud?

Responder

Cristian Carreño León 26 de julio de 2017, 14:12


Muchas gracias por este material. Saludos desde Bogotá.
Responder

Introduce tu comentario...

Comentar como: Marcos Ramos Cerrar sesión

Publicar Vista previa Avisarme

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y
si es un critica, bienvenida sea!!!

Enlaces a esta entrada


Crear un enlace

Entrada más reciente Página principal Entrada antigua

Suscribirse a: Enviar comentarios (Atom)

Cristian David Henao H. Tema Sencillo. Imágenes del tema: hdoddema. Con la tecnología de Blogger.

http://codejavu.blogspot.com/2013/05/herencia-en-java.html 8/8

S-ar putea să vă placă și