Java Básico

Java Básico 13: Herencia

14 videos

80 minutos

Una vez visto los objetos, vamos a ver lo qué es la herencia, la herencia consiste en crear los objetos que tengan las mismas características de los objetos padres, más otras diferentes, es igual a lo que sucede a la vida real, así que por ejemplo, me he creado la clase tren y este tren tiene maquinista, tiene antigüedad, tiene vagones con sus pasajeros, quizás, si yo ahora creo un tren de lujo, que tenga un bar, un camarero. Pues entonces ¿Qué hago? ¿Tengo que

crear otra vez, todas las características de los trenes porque el tren de lujo, también tiene maquinista, vagones, también tiene antigüedad? Y ¿tengo que crearme dos clase diferentes? ¡No!… simplemente me creo la clase tren y luego, la clase lujo que recibe todo lo del tren, más lo que tenga extra, eso es la, herencia, ¡ok! Para ahorrarnos la repetición de códigos, que es común, sino más bien se hereda uno de otro, para recibir las mismas propiedades y los mismos

métodos, todo esto, se hereda todo lo que tiene la clase padre. Así que, vamos a hacer eso, vamos a crearnos aquí una clase, aquí le pongo la clase, “lujo”, y en esta clase vamos a decir que tiene que heredar todo lo tren, ¿cómo hago eso?... pongo aquí: “extends tren”, extiende de tren, ¡ok! Y aquí en lujo, le damos sus características propias también, por ejemplo vamos a crear un String, con el nombre del camarero, y vamos a crearnos una variable, Booleana, donde

damos aquí el bar que tiene, y aquí vamos a guardar si está abierto o cerrado, ¿no? ¿Qué significa esto? Que de nuevo aquí me creo el constructor, de la clase lujo, así que le voy a poner el public lujo, y vamos a decirle que si no se da ningún dato, el camarero sea anónimo, y vamos a decir que el bar esté cerrado, ponemos, false, esto significa que el bar está cerrado, o también lo que podemos hacer es, crearnos un constructor, donde aquí le pasemos los datos, este va a

recibir un String, con el nombre del camarero y va a recibir una Booleana, con el estado del bar, entonces aquí al camarero le vamos a pasar el nombre, que hemos dado y en bar le vamos pasar el estado que nos diga, si está abierto o cerrado…. ¡ok!... vamos a guardar, y ahora aquí, en todo esto que estamos haciendo voy a borrar tanta línea… voy a dejar solo esto, para que veamos aquí los datos, y ahora aquí me voy a crear otro tren, pero que este sea de lujo, va a ser el

tercer tren y aquí le pongo, new lujo, ¡ok! Bueno si yo aquí muestro, van a ver a aquí, al final del todo, vamos a decir que nos muestre, por ejemplo, el nombre del camarero, camarero, el nombre del camarero va a ser anónimo, si yo aquí a lujo le paso el camarero, y le digo, pues, “Felipe”, y le vamos a decir que el bar esté abierto, y aquí le ponemos un, true, ahora cuando lo lanzo, aquí me dice que el camarero se llama Felipe, ¿vieron? y lo mismo que yo puedo hacer

las características de aquí, del lujo también puedo hacer las características de más antes, del tren, de modo que yo ahora, por ejemplo puedo consultar, la capacidad que va a tener ese tren, en ese estado, me dice que, cero, ¿ven? Y yo aquí igualmente, le puedo meter pasajeros, aquí al, tercero, también le puedo meter pasajeros, porque todos los métodos del primero del tren los heredan, ¿lo ven?... al tercero le he metido cinco, en el vagón con índice uno, y me dice que

la reserva se ha completado, porque las mismas funciones que hemos creado para la clase padre, han sido heredadas, por el hijo, mas aparte las propias que pueda tener, yo aquí, puedo crear una clase propia, que diga: “StatusBar”, estado del bar, y aquí le vamos a pasar una variable, Booleana, en el estado y vamos a abrirlo o a cerrarlo, según nosotros queramos, entonces lo que vamos a poner que, bar = estado, y aquí le preguntamos, if (bar = = true), vamos a mostrar

por pantalla, el bar ha sido abierto, el bar está abierto, y en caso contrario vamos a mostrar por pantalla, el bar está cerrado, de modo que ahora aquí, pues puedo, al tren número tercero, que era de lujo, decir: StatusBar, y pasarle un, false, y ahora me dirá que el bar ha sido cerrado, ¡perdonen!... StatusBar, a ver, a ver si alguna cosa lo escribí mal… Voy a copiarme esto por si acaso, ¡esto no le he escrito bien!... Si ¡Ah sí, no! Es que esto no es un mensaje por

pantalla. Simplemente tengo que invocarlo… ¡ya está!... ahora sí, el bar está cerrado, y si le digo, true, el bar está abierto, ¿ven? Pero, ¿qué sucede si, yo esto lo quiero hacer al primer tren? No puedo, ¡me da error! Porque, el primero es un tren normal, no hereda de lujo, por lo tanto esas características solamente las van a tener, los trenes que han sido de la clase tren, pero tren no va a recibir lo de lujo, tren no va poder tener nada de esto, sin embargo, los

trenes de lujo, si van a tener los suyos, más lo del resto, porque lujo hereda de tren, ¡ok! Así que, elijo tener las cosas en padre, pero el padre no tendrá las cosas del hijo, así es como funciona la herencia en Java, bueno, pues, ya has visto algo muy potente, has visto cómo crear objetos, donde puedes representar situaciones de la realidad con sus características propias, y poder hacer cosas con ellos mismos, y cómo hacer que otros hereden de ellos y reciban lo mismo más

lo propio, ¡bien! Esto ha sido una lección muy potente y para que cualquier lenguaje orientado a objetos esto es esencial dominarlo. Una vez visto esto vamos a ver otro video más de Java.

Si quieres enterarte de los nuevos cursos, suscríbete. No habrá spam, prometido :)

Sobre el autor

foto de jotajotavm
José Javier Villena

jotajota pa los amigos y jota pa los de más cnfianza.

Bio Seria: Analista-Programador en diferentes lenguajes. Tutor PREMIUM de reconocidas plataformas de nivel mundial como CodigoFacilito. Redactor de artículos para Cristalab. Mi canal de YouTube está patrocinado por la editorial ANAYA y LaTostadora. Me gusta explicar con detalle y poner varios ejemplos para que no queden dudas.

Bio Molona: Me presento :) soy informatico, ni frostis d hardware pero muy muxo de programacion, friki a medias o del to segun el dia. Me gusta programar, muxo. Manejo varios lenguajes y tdo lo ke sepa lo comparto x amor al arte. Este no es mi trabjo pero lo ago mejor y con +ganas y calidad que si lo fuera, x eso mismo, xq para mi es divertido. Solo spero al menos algo de agradecimientO!! ;)

Dios, qe gusto haber escrito este parrafo cm me a dao la gana sin pensar en ortografia ni tildes ni historias!!!!!