1
00:00:10,990 --> 00:00:15,230
Sintaxis de herencia en Java para definir la herencia en Java.

2
00:00:15,340 --> 00:00:21,730
Basta con utilizar la palabra extensa en la definición de la clase Java e indicar el nombre de la clase

3
00:00:21,730 --> 00:00:22,840
padre.

4
00:00:22,960 --> 00:00:29,560
Por ejemplo se muestra que la clase empleado hereda de la clase de persona y también la clase gerente

5
00:00:29,800 --> 00:00:35,300
hereda de la clase empleado es decir que tenemos una jerarquía de clases.

6
00:00:35,410 --> 00:00:42,010
Como nota todas las clases que no especifican de manera explícita una extensión entonces heredan de

7
00:00:42,010 --> 00:00:46,230
la clase obvie la cual es una clase base de IAVA.

8
00:00:46,240 --> 00:00:48,820
Cabe aclarar que en Java la herencia es simple.

9
00:00:48,820 --> 00:00:54,510
Esto quiere decir que sólo podemos heredar de una clase a la vez puede haber una jerarquía de clases.

10
00:00:54,520 --> 00:01:01,660
Como se muestra sin embargo una clase no puede heredar por ejemplo de persona y empleado al mismo tiempo

11
00:01:02,140 --> 00:01:05,130
únicamente puede heredar de una sola clase.

12
00:01:05,140 --> 00:01:10,990
Es importante indicar que todas las clases en Java heredan de la clase Object de manera indirecta o

13
00:01:10,990 --> 00:01:13,990
directa en el caso de la clase persona.

14
00:01:14,080 --> 00:01:19,450
Como no está indicado que hereda de alguna otra clase es decir que no usa una extensión en la definición

15
00:01:19,450 --> 00:01:27,020
de su clase se entiende en automático que hereda de la clase Object así que de manera implícita hace

16
00:01:27,080 --> 00:01:34,670
un extenso de la clase obvie pero las clases empleado y gerente cada una de ellas sí están definiendo

17
00:01:34,730 --> 00:01:38,450
un extenso y están especificando la clase padre.

18
00:01:38,690 --> 00:01:44,120
Sin embargo de manera indirecta la clase empleado por ejemplo al heredar de la clase de persona y la

19
00:01:44,120 --> 00:01:50,390
clase de persona a su vez heredar de la clase Object de manera indirecta a la clase empleado también

20
00:01:50,480 --> 00:01:53,650
heredará lo correspondiente a la clase Object.

21
00:01:53,750 --> 00:02:01,360
Debido a que su clase padre extiende la clase obvie así que en Java todas las clases de una u otra manera

22
00:02:01,600 --> 00:02:08,120
heredan las características de la clase obvie finalmente la clase Object es la clase core o base de

23
00:02:08,120 --> 00:02:13,350
Java y pertenece al paquete y pertenece al paquete Java Punto Naranja.

24
00:02:13,430 --> 00:02:19,100
Posteriormente hablaremos del tema de paquetes en Java y en el siguiente curso estudiaremos a detalle

25
00:02:19,100 --> 00:02:20,030
la clase obvie

26
00:02:22,910 --> 00:02:30,440
uso de super idish si aplicamos el concepto de herencia la clase e hija o su clase puede acceder a los

27
00:02:30,440 --> 00:02:37,590
atributos métodos o constructores permitidos de la clase padre solo con utilizar la palabra super De

28
00:02:37,590 --> 00:02:42,810
esta manera podemos aprovechar código heredado y aprovecharlo por ejemplo para iniciar un objeto de

29
00:02:42,810 --> 00:02:49,380
la clase e hija así que es muy común utilizar la palabra super dentro del constructor para llamar desde

30
00:02:49,380 --> 00:02:55,380
el constructor de la clase e hija al constructor de la clase padre Veamos un ejemplo de esto

31
00:03:00,900 --> 00:03:07,290
en este código podemos observar el uso de la palabra super la palabra super debe de ser la primera instrucción

32
00:03:07,500 --> 00:03:11,790
dentro del constructor de una clase así que se debe de llamar en primer lugar.

33
00:03:11,790 --> 00:03:18,570
Esto debido a que va a hacer una llamada al constructor de la clase padre de la cual está heredando.

34
00:03:18,660 --> 00:03:23,760
En este caso Estienne de la clase persona y el constructor de la clase de persona es el que podemos

35
00:03:23,760 --> 00:03:30,240
observar en la figura se aprovecha para inicializar el constructor del objeto creado de la clase padre

36
00:03:30,630 --> 00:03:36,120
y una vez que sea iniciado el constructor de la clase padre entonces se inicializar los atributos en

37
00:03:36,120 --> 00:03:43,450
este caso de la clase hija y cuando se crea un nuevo objeto de la clase empleado en automático se inicializar

38
00:03:43,890 --> 00:03:50,070
tanto los atributos de la clase padre caso de la clase persona como los atributos de la clase e hija

39
00:03:50,340 --> 00:03:52,650
en este caso el atributo de sueldo.

40
00:03:52,650 --> 00:03:59,600
Así el constructor de la clase e hija solo realizará el trabajo correspondiente a la clase e hija como

41
00:03:59,600 --> 00:04:05,360
puede ser la asignación de sus atributos pero no realizará el trabajo que ya realiza el constructor

42
00:04:05,360 --> 00:04:08,840
de la clase padre si es que es posible reutilizarlo.

43
00:04:08,840 --> 00:04:11,170
Por ello se utiliza la palabra super.

44
00:04:11,180 --> 00:04:16,490
De hecho la palabra Diz se puede utilizar de manera idéntica pero para llamar a un constructor de la

45
00:04:16,490 --> 00:04:21,990
misma clase y la palabra super para llamar a los constructores de la clase padre.

46
00:04:22,070 --> 00:04:28,280
La palabra super no sólo permite llamar a constructores de la clase padre sino cualquier atributo método

47
00:04:28,430 --> 00:04:31,260
o constructor heredable de la clase padre.

48
00:04:31,430 --> 00:04:36,920
En el ejemplo que vamos a realizar posteriormente vamos a observar cómo utilizar la palabra super para

49
00:04:36,920 --> 00:04:40,610
mandar a llamar el constructor de la clase padre desde la clase e hija

50
00:04:43,510 --> 00:04:51,260
uso de tu string y super en el código podemos observar un ejemplo para el uso del método.

51
00:04:51,740 --> 00:04:57,890
El método string según hemos comentado lo vamos a utilizar para mostrar el estado de un objeto es decir

52
00:04:57,890 --> 00:04:59,460
los valores de los atributos.

53
00:04:59,540 --> 00:05:05,960
En cierto momento del tiempo de vida del objeto el método string es un método heredado de la clase obvie

54
00:05:06,320 --> 00:05:13,610
y según hemos comentado la clase es la clase padre de todas las clases en Java ya sea de manera explícita

55
00:05:13,700 --> 00:05:14,730
o implícita.

56
00:05:14,870 --> 00:05:21,140
Por ejemplo en el caso de la clase empleado la clase horiek sería la clase abuela de la clase empleado

57
00:05:21,380 --> 00:05:27,770
debido a que se ha definido de manera explícita en la clase persona como su clase padre debido a que

58
00:05:27,770 --> 00:05:34,880
la clase persona como no define un extenso en automático va a ser un extenso pero de la clase Object

59
00:05:39,910 --> 00:05:45,620
y la clase empleado al hacer extent de la clase de persona en automático va a heredar las características

60
00:05:45,620 --> 00:05:51,260
de la clase de persona las cuales sean heredables pero también las características que sean heredables

61
00:05:51,440 --> 00:05:54,560
de la clase obvie de manera indirecta.

62
00:05:54,620 --> 00:06:00,260
De esta manera la clase de empleado también recibe los métodos y atributos que llegase a heredar de

63
00:06:00,260 --> 00:06:06,410
la clase objeto para indicar que un método pertenece a una clase padre o de niveles superiores como

64
00:06:06,410 --> 00:06:07,590
la clase Object.

65
00:06:07,730 --> 00:06:10,750
Entonces debemos agregar la anotación overnight.

66
00:06:10,940 --> 00:06:16,910
Esto quiere decir que estamos escribiendo el comportamiento de un método de la clase padre o clases

67
00:06:16,910 --> 00:06:18,290
superiores.

68
00:06:18,380 --> 00:06:24,230
Sin embargo este tema de escritura lo estudiaremos en el siguiente curso a más detalle pero para el

69
00:06:24,230 --> 00:06:30,380
ejemplo de este curso sólo diremos que es necesario agregar esta notación para que indiquemos al compilador

70
00:06:30,410 --> 00:06:37,730
Java que sabemos que es un método definido en una clase superior en este caso es un método público de

71
00:06:37,730 --> 00:06:39,070
la clase Object.

72
00:06:39,080 --> 00:06:45,650
Ahora este método string nos sirve según hemos comentado para convertir el estado de un objeto a una

73
00:06:45,650 --> 00:06:46,480
cadena.

74
00:06:46,820 --> 00:06:52,850
Pero para el caso que estamos mostrando la clase de persona tiene su propia definición del método destruí

75
00:06:53,300 --> 00:06:57,250
con sus propios atributos pertenecientes a la clase de persona.

76
00:06:57,410 --> 00:07:05,270
Por ejemplo atributos de persona nombre y edad ahora desde la clase empleado lo ideal sería reutilizar

77
00:07:05,360 --> 00:07:08,110
el código del método string de la clase padre.

78
00:07:08,330 --> 00:07:12,310
Cómo hacemos esto dentro del método string de la clase empleado.

79
00:07:12,380 --> 00:07:16,730
Lo que vamos a hacer es mandar a llamar al método de la clase padre.

80
00:07:16,790 --> 00:07:23,030
Para ello es que la palabra super nos va a servir para mandar a llamar precisamente la definición de

81
00:07:23,030 --> 00:07:29,630
la clase padre del método autodestruyen y posteriormente simplemente concatenados los valores correspondientes

82
00:07:29,810 --> 00:07:35,600
a la clase empleado es decir los valores restantes a agregar a este método.

83
00:07:36,050 --> 00:07:42,580
Esta llamada nos va a incluir los atributos de la clase padre como son Heydi persona nombre y edad y

84
00:07:42,600 --> 00:07:44,930
concatenan simplemente los valores restantes.

85
00:07:44,960 --> 00:07:47,170
En este caso el atributo de sueldo.

86
00:07:47,360 --> 00:07:53,570
Así que la palabra súper nos va a permitir mandar a llamar métodos de la clase padre siempre y cuando

87
00:07:53,570 --> 00:07:55,460
sean accesibles en este caso.

88
00:07:55,490 --> 00:08:02,570
Este método es público y por lo tanto es accesible ya que si fuera privado no podríamos acceder a ese

89
00:08:02,570 --> 00:08:09,230
método directamente con la sintaxis mostrada tendríamos que acceder a través de un método público y

90
00:08:09,230 --> 00:08:13,850
posteriormente en el siguiente curso vamos a ver los demás modificadores de acceso para que también

91
00:08:13,850 --> 00:08:20,240
tengamos el detalle de los modificadores de acceso restantes así que de esta manera ya tenemos completa

92
00:08:20,270 --> 00:08:26,660
la implementación del método string simplemente reutilizando el Código de la clase padre y agregando

93
00:08:26,660 --> 00:08:28,890
lo correspondiente de la clase e hija.

94
00:08:28,910 --> 00:08:32,860
A continuación vamos a crear un ejercicio para poner en práctica estos conceptos.
