1 00:00:00,150 --> 00:00:00,840 Bienvenidos. 2 00:00:00,870 --> 00:00:03,660 Continuamos con el concepto de herencia en Yaba. 3 00:00:03,750 --> 00:00:08,910 Bien, pero muy parecido a la vida real cuando tenemos relaciones de parentesco entre padre e hijo. 4 00:00:09,000 --> 00:00:12,030 Bueno, se pueden heredar muchas características genéticas. 5 00:00:12,120 --> 00:00:18,330 Por ejemplo, se puede traspasar del padre al hijo, ya sea el color de pelo, altura, contextura, 6 00:00:18,420 --> 00:00:21,870 color de ojo, en fin, un montón de cosas color de la piel. 7 00:00:21,990 --> 00:00:26,550 Y se pueden traspasar no solamente de padre e hijo, sino también de generación en generación. 8 00:00:26,610 --> 00:00:29,610 Característica de la abuela o el abuelo que lo puede heredar. 9 00:00:29,610 --> 00:00:30,960 También los nietos. 10 00:00:30,990 --> 00:00:35,310 Comportamiento, por ejemplo, los mismo gustos, preferencias. 11 00:00:35,400 --> 00:00:39,480 Por ejemplo, si el padre es bueno para el deporte, probablemente el hijo también sea bueno para el 12 00:00:39,480 --> 00:00:39,990 deporte. 13 00:00:40,090 --> 00:00:42,000 En fin, son cosas que se van heredando. 14 00:00:42,060 --> 00:00:45,360 Pero también vamos a ver que no todo es exactamente igual. 15 00:00:45,450 --> 00:00:50,730 Quizás haya comportamiento que variedad, pero concierto, modificación, concierto, cambio. 16 00:00:50,820 --> 00:00:56,310 En fin, quizá en el deporte el hijo incluso sea más rápido que el padre tenga mucho mejor rendimiento. 17 00:00:56,400 --> 00:00:56,740 Pero bien. 18 00:00:56,850 --> 00:01:02,340 Lo importante que igual que en la vida real, la herencia también la podemos aplicar en la programación 19 00:01:02,340 --> 00:01:03,030 orienta objetos. 20 00:01:03,210 --> 00:01:04,230 Bien, qué es la herencia? 21 00:01:04,320 --> 00:01:11,040 Una relación de parentesco entre dos clases donde unas el padre y la otra en la hija, una relación 22 00:01:11,040 --> 00:01:11,550 familiar. 23 00:01:11,670 --> 00:01:17,010 Entonces la herencia es el mecanismo que tiene la programación orientada a objetos para implementar 24 00:01:17,040 --> 00:01:19,350 relaciones de jerarquía de clases. 25 00:01:19,530 --> 00:01:25,440 Una subclase hereda al Estado, que son las características, los atributos y también comportamiento 26 00:01:25,440 --> 00:01:26,640 de todos sus ancestros. 27 00:01:26,820 --> 00:01:31,110 Es decir, no solamente del ancestro más directo, sino también de la jerarquía completa. 28 00:01:31,200 --> 00:01:36,360 También vamos a ver que una clase hija puede heredar de una sola clase a la vez, puede tener un padre 29 00:01:36,450 --> 00:01:37,590 directo 1. 30 00:01:37,680 --> 00:01:42,040 Pero obviamente hay una jerarquía va a tener un abuelo, un bisabuelo. 31 00:01:42,150 --> 00:01:42,600 En fin. 32 00:01:42,720 --> 00:01:47,190 Y ese comportamiento y atributos se van heredando también de generación en generación. 33 00:01:47,280 --> 00:01:52,230 Bueno, y acá entra el polimorfismo, una de las bases de reutilización de código. 34 00:01:52,350 --> 00:01:58,980 Acá podemos implementar clase con comportamiento en común que se pueden heredar a otras clases, clases, 35 00:01:58,980 --> 00:02:03,630 hijas y es importante porque podemos tener clases genéricas reutilizable. 36 00:02:03,750 --> 00:02:09,210 Y también uno de los principios o de los 5 principales principios de la programación de orientà objeto 37 00:02:09,390 --> 00:02:10,710 es justamente la herencia. 38 00:02:10,890 --> 00:02:14,230 Bien, y acá hay un tema importante que es relacionado al parentesco entre clases. 39 00:02:14,400 --> 00:02:19,830 Es decir, no se puede aplicar herencia si no existe una relación familiar entre ambas clases. 40 00:02:19,950 --> 00:02:25,620 Uno de los peores errores que se puede cometer es usar la herencia como único objetivo de reutilizar 41 00:02:25,620 --> 00:02:26,070 código. 42 00:02:26,250 --> 00:02:32,190 La herencia no se debe aplicar de forma mecánica si no hay una relación literal y coherente de padre 43 00:02:32,190 --> 00:02:32,490 e hijo. 44 00:02:32,610 --> 00:02:33,480 Igual que en la vida real. 45 00:02:33,600 --> 00:02:33,990 Es decir. 46 00:02:34,080 --> 00:02:36,360 Si no hay una relación familiar de parentesco. 47 00:02:36,480 --> 00:02:41,430 La herencia simplemente nos aplica porque por ejemplo, por el puro hecho de querer reutilizar código, 48 00:02:41,430 --> 00:02:43,380 podríamos heredar un producto. 49 00:02:43,380 --> 00:02:47,280 Por ejemplo, un producto o un cliente o persona. 50 00:02:47,340 --> 00:02:54,390 Cualquier objeto de la clase conexión a la base auto solamente para reutilizar la conexión y conectarnos 51 00:02:54,480 --> 00:02:56,460 y realizar consulta en esta clase. 52 00:02:56,460 --> 00:03:01,620 En la clase, por ejemplo cliente es un error de diseño, porque en realidad un cliente no tiene nada 53 00:03:01,620 --> 00:03:03,080 que ver con una conexión al acetato. 54 00:03:03,210 --> 00:03:07,410 Un producto no es una base auto, no es una conexión, no tiene nada que ver. 55 00:03:07,530 --> 00:03:11,370 Entonces tiene que ver una relación literal, coherente con la realidad. 56 00:03:11,460 --> 00:03:14,820 Una relación familiar, por ejemplo, cliente con persona puede ser. 57 00:03:15,000 --> 00:03:18,270 Se fijan, tiene que haber una relación de parentesco entre la clase. 58 00:03:18,630 --> 00:03:20,100 Veamos algunos ejemplo herencia. 59 00:03:20,310 --> 00:03:25,320 Bien, lo más importante en el código tenemos que utilizar la palabra stents, una palabra clave. 60 00:03:25,470 --> 00:03:29,340 Por ejemplo, la clase persona cualquiera con cualquier implementación. 61 00:03:29,400 --> 00:03:31,860 Pero también podríamos tener la clase profesor. 62 00:03:31,950 --> 00:03:33,960 Y para qué esta hereda de persona. 63 00:03:34,050 --> 00:03:38,370 Tenemos que utilizar la palabra stents, pero también como tenemos profesor, también podemos tener 64 00:03:38,370 --> 00:03:39,720 director y alumno. 65 00:03:39,840 --> 00:03:45,360 Y estas tres clases que son muy particulares, son especializaciones de persona, heredan de persona 66 00:03:45,450 --> 00:03:47,250 y pueden compartir todo esto. 67 00:03:47,250 --> 00:03:51,780 Métodos, comportamiento y características atributos de la clase persona. 68 00:03:51,900 --> 00:03:58,080 Todos tienen en común ciertos atributos y cierto comportamiento y lo heredan y lo pueden utilizar como 69 00:03:58,080 --> 00:03:59,970 si fueran parte de la misma clase. 70 00:04:00,090 --> 00:04:06,060 Pero también, por ejemplo, podríamos tener alumno internacional que también hereda extends de alumno. 71 00:04:06,120 --> 00:04:10,920 Por lo tanto, alumno internacional tiene como padre alumno, pero a su vez tiene como abuelo, como 72 00:04:10,920 --> 00:04:13,260 ancestro que no es directo a la persona. 73 00:04:13,440 --> 00:04:21,180 Entonces importante que directamente siempre hereda de una sola clase, pero indirectamente, es decir, 74 00:04:21,270 --> 00:04:26,250 a través de la jerarquía, puede heredar demás clases, pero siempre uno a la vez. 75 00:04:26,400 --> 00:04:29,910 Cuando una clase, por ejemplo persona, no hereda de ninguna clase. 76 00:04:30,030 --> 00:04:35,730 Bueno, en Java de forma implícita y por debajo, porque esto no se ve y esto ya lo he hablado muchas 77 00:04:35,730 --> 00:04:38,250 veces, se extiende de la clase objeto. 78 00:04:38,430 --> 00:04:44,970 Por lo tanto, la clase Object es padre de todas las clases en Java, en este caso persona de forma 79 00:04:45,060 --> 00:04:51,660 implícita hereda de objeto, pero a su vez profesor hereda de persona, pero de forma indirecta también 80 00:04:51,660 --> 00:04:55,500 va a heredar de object, ya que persona hereda de octeto. 81 00:04:55,680 --> 00:04:57,120 Otro ejemplo figura geométrica. 82 00:04:57,300 --> 00:04:59,880 Por ejemplo tenemos cuadrado triángulo círculo. 83 00:05:00,020 --> 00:05:02,580 Y todas heredan de figura geométrica. 84 00:05:02,720 --> 00:05:08,180 Pero recuerda, en figura geométrica, a su vez hereda de la clase Object de forma implícita y por supuesto 85 00:05:08,180 --> 00:05:12,490 cuadrado y triángulo también, pero de forma indirecta va a heredar de ответы. 86 00:05:12,830 --> 00:05:14,000 Veamos el diagrama súmele. 87 00:05:14,330 --> 00:05:17,450 Cómo se puede reflejar esta relación en el diseño? 88 00:05:17,780 --> 00:05:23,600 Lo primero es una relación que se le conoce como generalización, una relación de padre e hijo, y es 89 00:05:23,600 --> 00:05:26,000 una flecha continua, completamente continua. 90 00:05:26,060 --> 00:05:32,750 Pero a diferencia de la relación de asociación que vimos cuando es un atributo acá, en vez de terminar 91 00:05:32,750 --> 00:05:37,400 en flecha, termina en un triángulo, en un triángulo completamente cerrado y blanco. 92 00:05:37,550 --> 00:05:40,460 Y también es una relación fuerte, estructural. 93 00:05:40,550 --> 00:05:46,100 Nos permite crear, implementar objetos mucho más grandes, complejos, pero que a su vez tan compuesto 94 00:05:46,190 --> 00:05:48,050 por objetos más simples. 95 00:05:48,200 --> 00:05:49,820 En este caso, mediante la herencia. 96 00:05:49,920 --> 00:05:55,300 Bien, acá tenemos la clase persona con sus propios atributos, por ejemplo, nombre, apellido y mail. 97 00:05:55,480 --> 00:06:01,760 Y estos atributos pueden ser en común a muchas otras clases, clases, hijas que pueden heredar de persona, 98 00:06:01,790 --> 00:06:03,630 por ejemplo, alumno, alumno. 99 00:06:03,920 --> 00:06:05,090 Es un tipo de persona. 100 00:06:05,180 --> 00:06:08,390 Por lo tanto hereda de la clase persona de forma automática. 101 00:06:08,420 --> 00:06:15,180 Todos los atributos y métodos que son públicos y protegidos se pueden acceder desde la clase hija bueno 102 00:06:15,290 --> 00:06:16,100 y público. 103 00:06:16,250 --> 00:06:21,200 Se pueden acceder desde cualquier parte, pero no solamente los públicos y protegidos se pueden acceder, 104 00:06:21,260 --> 00:06:23,720 sino también los que son default. 105 00:06:23,810 --> 00:06:28,820 Cuando no se coloca ningún modifi, cortás eso, pero siempre cuando la clase padre y la clase hija 106 00:06:28,910 --> 00:06:34,910 estén dentro del mismo package alumno va a poder reutilizar y hereda todos estos atributos y métodos 107 00:06:34,910 --> 00:06:39,560 que son públicos y protegidos como si fueran parte de su propia clase. 108 00:06:39,740 --> 00:06:44,060 Pero además va a implementar sus propios atributos más específicos. 109 00:06:44,090 --> 00:06:50,930 Por ejemplo, el promedio institución, nota matemática, nota castellano, nota de historia, atributos 110 00:06:50,930 --> 00:06:55,760 que son particulares de alumno y además va a tener también su propio método getter setter y métodos 111 00:06:55,910 --> 00:06:57,650 de qué tipo de operaciones? 112 00:06:57,710 --> 00:06:59,090 También sus constructores. 113 00:06:59,150 --> 00:07:03,440 También va a poder heredar lo constructor, el padre, pero no de forma directa. 114 00:07:03,590 --> 00:07:08,180 No puede utilizar de forma directa el constructor si no tiene que implementar su propio constructor 115 00:07:08,330 --> 00:07:14,620 y ahí utilizar el constructor del padre para inicializar los datos o atributos que hereda del padre, 116 00:07:14,630 --> 00:07:17,120 por ejemplo, nombre, apellido y todos los atributos. 117 00:07:17,130 --> 00:07:19,700 El método que sea en privado es el privado. 118 00:07:19,790 --> 00:07:22,700 En la clase padre no se heredan en la clase hija. 119 00:07:22,820 --> 00:07:26,510 No se puede utilizar, no se puede acceder a menos que sea a través de métodos público. 120 00:07:26,570 --> 00:07:31,790 Por ejemplo, a través de los getter setter del constructor y por ejemplo del método String. 121 00:07:32,030 --> 00:07:38,240 El hijo podría utilizar el constructor del padre internamente porque constructor el padre público para 122 00:07:38,300 --> 00:07:45,920 asignar el nombre y el apellido y mediante los métodos get o el String podría acceder a estos atributos, 123 00:07:45,980 --> 00:07:47,960 pero de forma indirecta, no directa. 124 00:07:48,080 --> 00:07:51,020 Hay dos formas para implementar o hacer la herencia. 125 00:07:51,110 --> 00:07:55,190 Por un lado tenemos la generalización y por otro la especialización. 126 00:07:55,280 --> 00:08:01,250 Cuando nos damos cuenta que tenemos dos o más clases con atributos y con métodos en común que se están 127 00:08:01,250 --> 00:08:07,130 repitiendo, por ejemplo nombre, apellido, algún método en particular que se repiten en una y en otra 128 00:08:07,130 --> 00:08:07,580 clase. 129 00:08:07,670 --> 00:08:13,160 Bueno, hoy nos damos cuenta de que tenemos que refactorizar estos código en común y llevarlo a una 130 00:08:13,160 --> 00:08:14,060 clase más general. 131 00:08:14,120 --> 00:08:16,340 Por eso se le conoce como generalización. 132 00:08:16,580 --> 00:08:20,630 La llevamos a una clase padre y ahí implementamos todo lo que tengan en común. 133 00:08:20,720 --> 00:08:23,750 Estas clases y clases hijas heredan del padre. 134 00:08:23,870 --> 00:08:28,790 Entonces, a partir de clases hijas podemos implementar la herencia hacia una clase padre. 135 00:08:28,940 --> 00:08:32,340 La especialización sería otra forma de crear la herencia. 136 00:08:32,480 --> 00:08:34,100 O este proceso de herencia. 137 00:08:34,250 --> 00:08:34,880 Y esto al revés. 138 00:08:34,910 --> 00:08:40,010 Por ejemplo, cuando tenemos una clase que la estamos utilizando en nuestra aplicación y de repente 139 00:08:40,100 --> 00:08:45,740 nos damos cuenta que necesitamos otra clase muy parecida, pero más específica, mucho más particular, 140 00:08:45,800 --> 00:08:48,050 con otros atributos y otro método. 141 00:08:48,140 --> 00:08:51,890 Pero lo que sí va a tener algunas características en común a esta primera clase. 142 00:08:52,100 --> 00:08:58,640 Entonces lo que hacemos es derivar a una clase más específica, más especializada, y eso es el proceso 143 00:08:58,640 --> 00:09:01,970 de herencia mediante la especialización. 144 00:09:02,150 --> 00:09:03,200 Veamos algún ejemplo. 145 00:09:03,350 --> 00:09:05,510 Imaginemos que tenemos la clase de persona. 146 00:09:05,600 --> 00:09:11,750 La estamos utilizando en nuestro proyecto, en nuestro código ya tenemos algunas características implementadas 147 00:09:11,900 --> 00:09:17,930 y de repente nos damos cuenta que necesitamos un tipo de persona más específica, por ejemplo, alumno 148 00:09:18,050 --> 00:09:21,530 con otros atributos, pero que también comparten atributos en común. 149 00:09:21,740 --> 00:09:26,150 Entonces, bueno, ahí tenemos que crear a partir de persona una clase más particular. 150 00:09:26,360 --> 00:09:31,250 Y así como tenemos alumnos, también nos podríamos dar cuenta de que vamos a requerir una clase profesor, 151 00:09:31,430 --> 00:09:36,530 pero tanto alumno como profesor y persona van a tener métodos y atributos en común. 152 00:09:36,680 --> 00:09:43,010 Y acá hay un principio de la programación orienta objetos que se le conoce como open cloud, abierto 153 00:09:43,100 --> 00:09:46,760 a la extensión, a la herencia, cerrado a la modificación. 154 00:09:46,850 --> 00:09:47,600 Qué es lo que quiere decir? 155 00:09:47,720 --> 00:09:52,700 Que en vez de modificar persona con esta nueva característica nuevo cambio, ya que persona está funcionando 156 00:09:52,700 --> 00:09:54,620 con nuestro código, ya te ha implementado. 157 00:09:54,710 --> 00:09:57,710 Entonces, si agrego cambio, podría romper nuestra aplicación? 158 00:09:57,800 --> 00:09:59,390 Podría dejar de funcionar entonces? 159 00:09:59,700 --> 00:10:01,410 Mejor dejar persona como está. 160 00:10:01,530 --> 00:10:07,650 E implementar herencia, una nueva clase más específica alumno y no modifica de persona si no está en 161 00:10:07,650 --> 00:10:11,970 tela y por eso se llama Open Clouds, tratar de evitar la modificación. 162 00:10:12,090 --> 00:10:15,480 De esa forma evitamos que nuestro código que ya funciona se puede romper. 163 00:10:15,630 --> 00:10:17,880 Veamos un ejemplo de generalización. 164 00:10:18,030 --> 00:10:18,840 Todo lo contrario. 165 00:10:19,080 --> 00:10:23,250 Supongamos que tenemos dos clases al mismo nivel y sin ninguna relación entre ellas. 166 00:10:23,250 --> 00:10:28,320 Son completamente distintas y separadas, por ejemplo, alumno y profesor. 167 00:10:28,470 --> 00:10:32,430 Y nos damos cuenta que estamos repitiendo código, que tenemos atributos en común. 168 00:10:32,490 --> 00:10:38,190 El nombre, el apellido, los métodos tras setters se fijan entonces bueno, para no repetir código, 169 00:10:38,280 --> 00:10:44,220 si realizamos estos comportamientos y característica en una clase en común que le vamos, se llama persona. 170 00:10:44,430 --> 00:10:49,350 De esa forma podemos reutilizar nuestro código, sea mucho más limpio, más simple. 171 00:10:49,380 --> 00:10:54,960 También con este comportamiento genérico y en común ven la palabra shuper, una palabra muy importante, 172 00:10:54,960 --> 00:10:58,020 reservada en la herencia, reservada al lenguaje. 173 00:10:58,230 --> 00:11:05,550 Bueno, supers, se refiere que una clase hija puede reutilizar o invocar atributos y métodos de la 174 00:11:05,550 --> 00:11:06,090 clase padre. 175 00:11:06,150 --> 00:11:12,780 Recuerden que con this siempre podemos utilizar atributos y métodos dentro de la misma clase con super. 176 00:11:12,840 --> 00:11:18,360 Entonces se refiere a la clase padre, como por ejemplo si en la clase hija alumno quiero reutilizar 177 00:11:18,450 --> 00:11:21,240 el constructo del padre para asignar el nombre y apellido. 178 00:11:21,390 --> 00:11:24,600 Recuerden que el nombre apellido es private en persona. 179 00:11:24,750 --> 00:11:28,740 Por lo tanto, alumno o cualquier clase hija no puede utilizar estos atributos. 180 00:11:28,860 --> 00:11:34,640 No puede acceder, pero sí lo puede inicializar a través de constructor del padre, ya que público entonces 181 00:11:34,650 --> 00:11:36,150 para puede invocar el constructor. 182 00:11:36,240 --> 00:11:43,140 Utilizamos super alumno hereda de persona y tiene constructor que recibe el nombre, el apellido, pero 183 00:11:43,140 --> 00:11:44,220 también el promedio. 184 00:11:44,340 --> 00:11:50,820 El promedio sería un atributo particular de alumno, pero nombre apellido son atributos en común con 185 00:11:50,820 --> 00:11:51,390 persona. 186 00:11:51,570 --> 00:11:56,430 Entonces utilizando shuper puede pasar el nombre y el apellido al padre. 187 00:11:56,580 --> 00:12:02,580 A pesar de que privado, pero como el constructor es público se puede asignar y además luego después 188 00:12:02,580 --> 00:12:07,940 de invocar el súper ya puedo asignar el promedio con this, ya que propio de la clase alumno. 189 00:12:08,100 --> 00:12:10,140 También es muy importante que siempre el super. 190 00:12:10,230 --> 00:12:15,630 En el caso de constructor se tiene que invocar primero antes que nada como primera línea en el constructor, 191 00:12:15,900 --> 00:12:17,560 es decir, no se puede llamar el super. 192 00:12:17,580 --> 00:12:23,550 Por ejemplo, después de asignar el promedio no primero, siempre se invoca constructor del padre y 193 00:12:23,550 --> 00:12:30,210 luego los atributo más específico de la clase y luego podemos utilizar el constructor de alumno como 194 00:12:30,210 --> 00:12:31,080 si fuera propio. 195 00:12:31,320 --> 00:12:36,000 Se pondrá usar el nombre Lupillo y además el promedio en nombre en este caso 3. 196 00:12:36,120 --> 00:12:40,770 El apellido Guzmán se inicializa en el padre con super. 197 00:12:41,040 --> 00:12:45,690 Entonces la palabra super muy importante la vamos a ver después con más detalle en los ejemplos. 198 00:12:45,840 --> 00:12:51,300 Otra característica de la herencia es poder sobrescribir o modificar un método del padre. 199 00:12:51,480 --> 00:12:55,290 Un comportamiento padre no tiene por qué ser igual que en la clase hija. 200 00:12:55,380 --> 00:12:58,770 Podría tener variantes, ya sea completamente distinto. 201 00:12:58,910 --> 00:13:04,740 Bueno, esa la gracia del polimorfismo diferente forma para implementar un mismo comportamiento o bien 202 00:13:04,740 --> 00:13:10,170 podría mantener algo del padre y agregar una nueva característica a este comportamiento. 203 00:13:10,310 --> 00:13:11,280 Bien, veamos el ejemplo. 204 00:13:11,430 --> 00:13:15,720 Entonces acá tenemos alumno hereda de padre, implementa el mismo método? 205 00:13:15,840 --> 00:13:17,370 Si tiene que llamar exactamente igual. 206 00:13:17,400 --> 00:13:24,570 Public void Mimmo modificador mismo nombre método mismo retorno, argumento parámetro tiene que ser 207 00:13:24,660 --> 00:13:25,530 exactamente igual. 208 00:13:25,650 --> 00:13:31,680 Y además lleva el hover right, que es una anotación para indicar y documentar de que estamos o describiendo 209 00:13:31,770 --> 00:13:33,240 un método del padre. 210 00:13:33,330 --> 00:13:39,540 Si queremos mantener la característica al padre y le queremos agregar funcionalidad extra, en ese caso 211 00:13:39,540 --> 00:13:41,550 también podemos utilizar el super. 212 00:13:41,760 --> 00:13:47,010 Entonces mantenemos comportamiento original del padre, pero además le podemos agregar un extra en la 213 00:13:47,010 --> 00:13:47,580 clase hija. 214 00:13:47,730 --> 00:13:53,730 Entonces Ciria con super invocamos método al padre, lo mandamos a llamar y luego después de eso le 215 00:13:53,730 --> 00:13:54,570 agregamos. 216 00:13:54,750 --> 00:13:56,190 Bueno, puede ser después o antes. 217 00:13:56,430 --> 00:13:57,960 En el caso un método da lo mismo. 218 00:13:58,050 --> 00:14:01,350 En el caso constructor siempre es lo primero, el súper primero. 219 00:14:01,500 --> 00:14:06,360 En el caso un método puede ir antes o después y le agregamos nuestra propia implementación. 220 00:14:06,510 --> 00:14:08,780 También podemos sobrescribir el string. 221 00:14:08,940 --> 00:14:14,730 Por ejemplo, si queremos reutilizar el streak del padre, también lo podemos invocar con el súper. 222 00:14:14,940 --> 00:14:16,020 Por ejemplo persona. 223 00:14:16,140 --> 00:14:21,900 El twitt Frink retorna el nombre Lupillo, pero el alumno con súper punto tu string. 224 00:14:22,110 --> 00:14:28,050 Mantenemos el nombre de apellido a través del Tustin del padre con el super y además le agregamos el 225 00:14:28,050 --> 00:14:28,530 promedio. 226 00:14:28,740 --> 00:14:35,460 Entonces el tustin del alumno sería nombre apellido coma el promedio igual a su valor. 227 00:14:35,640 --> 00:14:40,050 Y también podemos editar o restringir la herencia y la sobre escritura de método. 228 00:14:40,230 --> 00:14:46,320 Entonces, para impedir que una clase tenga una jerarquía tenga hijos, simplemente utilizamos la palabra 229 00:14:46,320 --> 00:14:50,190 final como modificador de la clase, por ejemplo final. 230 00:14:50,220 --> 00:14:51,870 Public class persona. 231 00:14:51,960 --> 00:14:56,070 Entonces, al indicar que es final, esta clase queda hasta ahí nomás. 232 00:14:56,160 --> 00:14:58,380 No puede tener descendencia mismo. 233 00:14:58,380 --> 00:14:59,490 Modificador final para. 234 00:14:59,560 --> 00:15:02,020 Constante, una constante no se puede modificar. 235 00:15:02,110 --> 00:15:04,540 En este caso, una clase tampoco se puede modificar. 236 00:15:04,630 --> 00:15:06,220 No puede tener herencia. 237 00:15:06,340 --> 00:15:09,130 Se fijan, se aplica exactamente el mismo modificador. 238 00:15:09,220 --> 00:15:14,380 Para mí mi concepto no se puede modificar, la clase no puede tener una jerarquía. 239 00:15:14,470 --> 00:15:17,230 Y pasa también lo mismo con la sobreexcitada de método. 240 00:15:17,380 --> 00:15:23,670 Podríamos tener, por ejemplo, una clase común y corriente public class persona bueno soporta herencia, 241 00:15:23,710 --> 00:15:29,650 podemos heredar de persona, pero el o los métodos que tengan el modificador final no se pueden modificar. 242 00:15:29,770 --> 00:15:31,960 Es decir, no se puede sobreescribir ese método. 243 00:15:32,050 --> 00:15:36,760 La clase hija no puede reimplantar o redefinir el método del padre. 244 00:15:37,010 --> 00:15:41,440 Entonces colocamos final como modificador en el método el padre de esa forma. 245 00:15:41,560 --> 00:15:44,470 Ese método no se puede modificar, es constante. 246 00:15:44,560 --> 00:15:47,440 Se tiene que utilizar de esa forma para toda la jerarquía. 247 00:15:47,530 --> 00:15:48,070 Nada más. 248 00:15:48,130 --> 00:15:50,890 Continuamos en la siguiente clase con los ejemplos.