00:00:00
[Música]
00:00:10
Hola qué tal a todos Cómo están
00:00:12
Bienvenidos a este nuevo tutorial del
00:00:14
curso de Java de código facilito Mi
00:00:16
nombre es Jorge y Bueno pues el día de
00:00:19
hoy Vamos a continuar con la
00:00:20
programación orientada a objetos vamos a
00:00:22
ver
00:00:23
específicamente lo que es el concepto de
00:00:26
herencia bien bueno en programación
00:00:28
orientada objetos hay varios conceptos
00:00:30
este característicos de de ese tipo de
00:00:33
programación como lo es la herencia eh
00:00:36
otro sería por ejemplo el polimorfismo y
00:00:39
bueno entre otros pero vamos a a
00:00:42
simplificar eso y vamos a verlo más
00:00:44
tranquilamente vamos a ver únicamente
00:00:46
herencia en la sesión de hoy Y luego
00:00:49
como se supone que este es un curso para
00:00:52
principiantes o o básico eh Bueno pues
00:00:55
vamos a dejar todo todos los demás
00:00:57
conceptos por un lado y vamos a a pues
00:01:00
ahora sí que enfocarnos únicamente en
00:01:02
eso de la herencia y bien bueno Qué es
00:01:04
la herencia la herencia es
00:01:06
básicamente el decir de que un objeto en
00:01:10
en Java puede heredar o
00:01:15
este propiedades o
00:01:18
características sea del mismo a otro
00:01:20
tipo de objetos siguiendo como una
00:01:23
jerarquía entonces bien si bien en el
00:01:25
tutorial pasado eh creamos una clase que
00:01:28
se llama carro como pueden ver aquí
00:01:30
estoy ubicado en el archivo de la clase
00:01:32
de carro y en la parte de abajo he
00:01:36
creado esta pequeña esta pequeña clase
00:01:39
eh No es una clase que diga public Class
00:01:42
simplemente es una clase normal y
00:01:46
colocamos carro BMW y nótese que aquí
00:01:50
tengo esta palabra que dice
00:01:52
extends carro y bien qué es lo que
00:01:55
estamos diciendo Bueno lo que estamos
00:01:57
diciendo básicamente es que esta nueva
00:02:00
clase es un nuevo tipo de objeto es un
00:02:03
nuevo objeto que no es un carro pero es
00:02:05
es una especie de objeto que Eh pues es
00:02:09
un hijo de lo que es el carro o sea es
00:02:12
otro tipo es un carro diferente en es
00:02:15
caso pues es BMW y esto de extend quiere
00:02:19
decir que extiende que la clase padre o
00:02:22
o la clase principal pues ahora sí el
00:02:25
padre de de esta clase BMW es el carro
00:02:29
porque pues obviamente sabemos que un
00:02:31
carro de tipo BMW puede ser un carro
00:02:35
pero un carro cualquiera No
00:02:37
necesariamente tiene que ser BMW y esto
00:02:41
lo que hace es que básicamente Bueno
00:02:42
pues Aquí tengo como pueden ver nada más
00:02:44
tengo un constructor que lo que hace Es
00:02:48
que este modelo es igual a
00:02:51
BMW y luego tenemos un método aquí que
00:02:55
dice Turbo que simplemente Bueno es un
00:02:58
método especial de esta clase BMW que yo
00:03:01
le he colocado nada más un mensaje
00:03:03
acabas de viajar a 100 millas por hora
00:03:05
pues nada más un mensaje que dice que
00:03:09
pues el BMW es rápido verdad eh Pero
00:03:12
bueno entonces la característica de esas
00:03:15
clases que extienden a otras Es que
00:03:17
heredan todas sus propiedades y sus
00:03:20
métodos por ejemplo el carro BMW va a
00:03:23
heredar todas estas características y
00:03:26
pues todos estos este ahora sí que estos
00:03:29
métodos que aparecen aquí sin necesidad
00:03:32
y no tengo necesidad de escribirlos
00:03:34
nuevamente sino que estoy reutilizando
00:03:37
el código es una de las ventajas de Java
00:03:39
la reutilización de código Entonces
00:03:41
vamos a irnos a nuestra clase principal
00:03:43
la clase Main y bueno vamos a borrar lo
00:03:45
que teníamos
00:03:47
antes
00:03:48
eh Como pueden ver Bueno aquí Este estoy
00:03:51
creando un carro ese carro pues es la
00:03:54
variable c pero ahora en vez de decir c
00:03:57
ig a New carro
00:04:00
vamos a decir que c es igual a New carro
00:04:07
BMW como pueden ver no hay error este lo
00:04:10
que estoy creando pues es
00:04:11
específicamente un carro pero el carro
00:04:14
que estoy creando no es un carro normal
00:04:16
sino que es un carro
00:04:18
BMW es una es un objeto diferente
00:04:21
Entonces no va a ser un poco diferente a
00:04:24
a lo anterior y pues yo puedo acceder a
00:04:27
ciertas características que tenemos por
00:04:29
ejemplo
00:04:30
este
00:04:34
Apagar eh
00:04:39
encender y el
00:04:43
método al método Turbo Entonces vamos a
00:04:47
buscarlo por
00:04:49
aquí aquí no
00:04:53
aparece
00:04:56
escribirlo public Boy turbo
00:05:03
está marcando un error simplemente Bueno
00:05:05
vamos a convertir mejor esto
00:05:06
directamente a a
00:05:09
BMW OK OK ahora sí bien este corrección
00:05:13
la forma ideal de declararlo
00:05:14
inicialmente pues es es esta no vamos a
00:05:17
declararlo inicialmente como carro BMW y
00:05:20
luego c ig New carro BMW para que no nos
00:05:22
genere
00:05:23
errores muy bien Bueno como pueden ver
00:05:26
este si yo coloco C punto me van a
00:05:30
aparecer estos métodos que pues son de
00:05:33
la clase carro como pueden ver de la
00:05:36
parte derecha aquí me aparecen las
00:05:37
variables dice carro carro que pertenece
00:05:40
a a la clase carro sin embargo si yo me
00:05:43
voy más abajo me va a aparecer por
00:05:45
ejemplo es que dice carro BMW que es
00:05:47
Turbo que ya es nativa de de lo que es
00:05:49
el
00:05:50
BMW Y bueno pues como ya no tengo más ya
00:05:54
no he escrito más métodos
00:05:55
característicos Pues por eso no no me
00:05:57
aparecen más pero eh el punto es que
00:06:00
vean aquí que se mantiene ahora sí que
00:06:02
las propiedades que tenemos antes si
00:06:05
corremos este
00:06:06
código damos OK Vamos a ver que pues el
00:06:10
carro efectivamente pues aparece que
00:06:12
está apagado luego lo encendemos y luego
00:06:15
pues tiene un método que es acabas de
00:06:17
viajar a 100 millas por horas que es el
00:06:19
método Turbo característicos del BMW
00:06:22
ahora ntese nuevamente quiero que se den
00:06:25
muy bien cuenta de esto que apagar y
00:06:27
encender no forman parte de los métodos
00:06:31
descritos dentro de del espacio
00:06:34
correspondiente al carro de tipo
00:06:36
BMW este sino que están descritos en el
00:06:41
en la clase que dice carro eh acá que
00:06:45
bueno todo ese espacio pertenece a lo
00:06:47
que es la clase carro comienza aquí en
00:06:49
este punto y aquí abajo pues tenemos
00:06:52
encender y Apagar pues pertenecientes
00:06:54
obviamente a a esta clase pero
00:06:57
efectivamente como carro como carro BMW
00:07:01
este desciende es una clase hija de de
00:07:06
esta clase carro pues hereda todas estas
00:07:10
Pues todos estos métodos estas
00:07:12
propiedades que habíamos descrito
00:07:14
anteriormente incluso s podemos escribir
00:07:16
una nueva clase vamos a decir
00:07:19
Class
00:07:22
carro Toyota
00:07:25
extend
00:07:27
carro y bueno pues este podemos por
00:07:30
ahora simplemente dejarlo vacío y decir
00:07:34
que por ejemplo dis
00:07:37
modelo es igual a
00:07:40
Toyota podemos ponerlo así para que el
00:07:43
modelo automáticamente sea de tipo
00:07:47
Toyota y
00:07:51
podemos vamos a colocar mejor modelo
00:07:53
nada
00:07:55
más bien vamos a regresar acá arriba
00:07:57
para verificar cuáles son que tenemos
00:08:00
Okay Stream
00:08:04
modelo bien Esto vamos a colocarlo
00:08:07
dentro de un constructor
00:08:09
public carro
00:08:19
Toyota Okay muy bien Ahora vamos a decir
00:08:22
que cuando se haga un Toyota el modelo
00:08:23
efectivamente va a ser Toyota y vamos a
00:08:26
crear otro método
00:08:29
que simplemente nos retorne public
00:08:34
String
00:08:40
modelo para que nos devuelva Cuál es el
00:08:43
modelo Ahora sí del carro este ntes que
00:08:46
este método lo estoy colocando solamente
00:08:49
en carro Toyota de manera que en el
00:08:52
carro de tipo BMW no nos debe de
00:08:55
aparecer colocamos el c y lo buscamos
00:08:59
pues no nos va a aparecer por ningún
00:09:01
lado pero si nosotros efectivamente
00:09:04
cambiamos el tipo de objeto y creamos un
00:09:06
carro
00:09:09
Toyota Pues nótese que el turbo ya no
00:09:12
funciona porque es únicamente hace parte
00:09:13
del
00:09:14
BMW Así que vamos a eliminarlo y vamos a
00:09:18
colocar Aquí Cuál
00:09:20
es Aquí está el
00:09:24
modelo para poderlo imprimir en en la
00:09:28
pantalla si
00:09:34
printline colocamos dentro del del print
00:09:37
Line ejecutamos el
00:09:40
código y pues vemos que el carro es
00:09:43
Toyota y mantiene aú así pues las
00:09:45
propiedades que vienen del tipo carro
00:09:48
pero como pues este carro ya no ya no
00:09:50
hace parte de lo que es el BMW sino que
00:09:52
está separado pues obviamente no va eh a
00:09:56
obtener el el método Turbo que
00:09:58
pertenecía a la otro la clase Incluso si
00:10:02
si regresáramos
00:10:03
a lo que era el el
00:10:08
BMW No
00:10:11
encontraremos pues como ya les había
00:10:13
comentado ese ese método que
00:10:16
decía modelo no O sea no podemos obtener
00:10:19
directamente el modelo porque no está
00:10:20
declarado si quisiéramos hacer eso
00:10:22
tendríamos este método que está aquí
00:10:25
moverlo a la clase carro para que herede
00:10:27
a las otras clases ahora vamos a hacerlo
00:10:30
vamos simplemente a copiar borramos y lo
00:10:33
declaramos dentro del espacio de carro
00:10:36
general que es el padre de estas dos
00:10:38
clases vamos a colocarlo aquí Y
00:10:42
regresamos al Main y ahora sí vamos a
00:10:44
encontrar que pues automáticamente pues
00:10:47
ya va aparecer el método aquí lo pueden
00:10:50
ver porque ya hereda ya está siendo
00:10:54
heredado el BMW Y si cambiáramos al
00:10:58
Toyota a así aparecería porque también
00:11:00
se hereda al al objeto pues ahora sí al
00:11:04
carro de tipo Toyota solamente no
00:11:07
serviría el turbo y bien bueno Más o
00:11:09
menos Esto es lo que quiere decir la
00:11:11
herencia la herencia nos dice que las
00:11:13
clases o los objetos pueden tener hijos
00:11:17
por decirlo así más de una vez o sea
00:11:19
incluso Aunque aquí tengamos que el
00:11:21
Toyota extienda carro podemos decir este
00:11:25
vamos a crear aquí rápidamente que
00:11:27
carrito pue tender a carro
00:11:33
Toyota o sea puede haber una varias
00:11:37
generaciones por por decirlo así este de
00:11:42
de objetos podría comenzar desde carro
00:11:45
el carro Podría tener diferentes hijos
00:11:47
que serían el carro Toyota y el carro
00:11:49
BMW y el carro Toyota Podría tener
00:11:52
incluso otro hijo que sería carrito y
00:11:54
carrito heredaría obviamente todas las
00:11:57
los métodos y propiedades de de tanto
00:11:59
carro Toyota como de Eh pues el carro
00:12:03
original así que bueno pues la herencia
00:12:06
Efectivamente es un método muy muy
00:12:09
eficiente para eh reutilización de
00:12:12
código podemos crear muchos diferentes
00:12:14
tipos de objeto que sean pues eh familia
00:12:18
y recordemos que pues cada clase
00:12:20
solamente puede extender de una sola
00:12:22
clase a la vez una clase solamente puede
00:12:24
tener un padre no puede tener más eh Muy
00:12:27
bien Bueno pues creo que esto ido todo
00:12:29
por este corto tutorial Eh pues el
00:12:33
propósito era comprender Qué era la
00:12:34
herencia y pues hacerlo pues comprender
00:12:37
aún más mediante esos ejemplos Espero
00:12:39
que les haya servido de algo y nos vemos
00:12:42
pues en la próxima ocasión con un nuevo
00:12:44
tutorial de Java bien muchas gracias mi
00:12:48
nombre es Jorge y nos vemos hasta la
00:12:49
próxima un saludo