1 00:00:00,690 --> 00:00:09,369 Entonces, vamos a grabar la siguiente parte, si habláis o preguntáis algo me dais la autorización a grabaros, ¿vale? 2 00:00:09,949 --> 00:00:22,210 Entonces, nosotros hasta la última vez hemos estado viendo un poquito la diferencia entre objeto y clase, hemos estado viendo los constructores, cómo se crea un objeto, etc. 3 00:00:22,210 --> 00:00:41,310 Hemos llegado hasta esto, donde hemos visto que sustancialmente podemos crear constructores con distintos números o distintos orden de parámetros y por lo tanto lo que se puede hacer es sobrecargar un constructor. 4 00:00:41,310 --> 00:00:45,210 También los métodos se pueden sobrecargar 5 00:00:45,210 --> 00:00:52,710 La sobrecarga de métodos es que en la misma clase pueden haber varios métodos que se llaman con el mismo nombre 6 00:00:52,710 --> 00:00:59,490 Se llaman iguales, pero difieren en el número o en el tipo de parámetros que reciben 7 00:00:59,490 --> 00:01:09,310 Nunca puede haber métodos que tengan el mismo nombre con la misma secuencia de tipos de parámetros 8 00:01:09,310 --> 00:01:11,689 Eso no se puede hacer, se enfada 9 00:01:11,689 --> 00:01:13,810 ¿Qué queréis? Hacemos un ejemplo 10 00:01:13,810 --> 00:01:18,790 Por ejemplo, yo puedo crear el método escribe que recibe un string 11 00:01:18,790 --> 00:01:20,430 Y lo que hace es escribir un string 12 00:01:20,430 --> 00:01:23,030 El método escribe que recibe un num 13 00:01:23,030 --> 00:01:24,670 Y lo que hace es escribir un num 14 00:01:24,670 --> 00:01:29,469 Y el método escribe que recibe un string, una i 15 00:01:29,469 --> 00:01:31,870 Y hace esta combinación de aquí, por ejemplo 16 00:01:31,870 --> 00:01:34,430 El método es siempre el método escribe 17 00:01:34,430 --> 00:01:38,170 Pero el programa sabe en cualquier momento 18 00:01:38,170 --> 00:01:40,890 Cuál de los tres tiene que utilizar 19 00:01:40,890 --> 00:01:44,030 En base al tipo de datos que se le pasa 20 00:01:44,030 --> 00:01:46,010 Si yo llamo escribe de 5 21 00:01:46,010 --> 00:01:47,969 Estará llamando este método de aquí 22 00:01:47,969 --> 00:01:49,510 Y me imprimirá 5 en pantalla 23 00:01:49,510 --> 00:01:53,689 Si yo llamo escribe de gato,7 24 00:01:53,689 --> 00:01:57,109 Pues me escribirá gato un espacio 7 25 00:01:57,109 --> 00:01:57,969 ¿Vale? 26 00:01:59,189 --> 00:02:02,069 Tened en cuenta también que normalmente 27 00:02:02,069 --> 00:02:04,810 Si se llaman iguales 28 00:02:04,810 --> 00:02:07,230 Los métodos hacen lo mismo 29 00:02:07,230 --> 00:02:10,650 cuando vosotros habéis visto 30 00:02:10,650 --> 00:02:13,729 el mismo método 31 00:02:13,729 --> 00:02:15,389 println 32 00:02:15,389 --> 00:02:19,310 si lo vamos a ver está sobrecargado 33 00:02:19,310 --> 00:02:20,689 puede escribir un número 34 00:02:20,689 --> 00:02:22,189 puede escribir un string 35 00:02:22,189 --> 00:02:23,490 puede escribir un boolean 36 00:02:23,490 --> 00:02:24,750 puede escribir un float 37 00:02:24,750 --> 00:02:28,569 nosotros lo buscamos 38 00:02:28,569 --> 00:02:31,229 ap java 39 00:02:31,229 --> 00:02:34,069 esto es println 40 00:02:34,069 --> 00:02:35,389 es un 41 00:02:35,389 --> 00:02:38,370 printreader 42 00:02:38,370 --> 00:02:41,490 Si vamos al objeto printWriter 43 00:02:41,490 --> 00:02:43,530 Que es el que me permite escribir 44 00:02:43,530 --> 00:02:46,270 Y vamos a buscar println 45 00:02:46,270 --> 00:02:48,689 Veis que println 46 00:02:48,689 --> 00:02:51,550 Hay un println a secas 47 00:02:51,550 --> 00:02:52,949 Un println para booleano 48 00:02:52,949 --> 00:02:54,229 Un println para char 49 00:02:54,229 --> 00:02:55,889 Un println para redachar 50 00:02:55,889 --> 00:02:57,110 Un println para double 51 00:02:57,110 --> 00:02:58,750 Un println para long 52 00:02:58,750 --> 00:03:02,270 Hacen todo lo mismo 53 00:03:02,270 --> 00:03:04,889 Pero 54 00:03:04,889 --> 00:03:07,289 Pillan un parámetro distinto 55 00:03:07,289 --> 00:03:13,689 Entonces el método println dentro de la clase printwriter que es esta de aquí 56 00:03:13,689 --> 00:03:15,509 Está sobrecargado 57 00:03:15,509 --> 00:03:16,949 ¿Entiendes? 58 00:03:17,789 --> 00:03:18,330 ¿Dudas? 59 00:03:19,389 --> 00:03:19,629 Vale 60 00:03:19,629 --> 00:03:26,110 Al llamar el método escribe dependiendo de cuantos parámetros uso 61 00:03:26,110 --> 00:03:30,889 Y el tipo de los parámetros que tengo pues aplicaré una implementación u otra 62 00:03:30,889 --> 00:03:37,090 Es decir que será la Jartel Machine o quien por él o el compilador o lo que sea 63 00:03:37,090 --> 00:03:46,169 que cuando tú llamas Escribe con un determinado parámetro, sabrá cuál de estos tres es el que de verdad estás llamando. 64 00:03:46,490 --> 00:03:50,129 Y si ahora llamo Escribe entre paréntesis y pongo True, ¿qué pasa? 65 00:03:56,520 --> 00:04:04,819 Se enfada. Me lo marca el ojo diciendo, no existe un método Escribe que pille un Boolean como parámetro. 66 00:04:05,219 --> 00:04:08,099 Por lo tanto, no sé qué tengo que hacer. No existe este método. 67 00:04:08,099 --> 00:04:10,039 Debería crear un nuevo 68 00:04:10,039 --> 00:04:11,699 Escribe boolean b 69 00:04:11,699 --> 00:04:14,080 Que lo que haga es system.8.2.1.n 70 00:04:14,080 --> 00:04:14,419 De b 71 00:04:14,419 --> 00:04:15,319 Ya está 72 00:04:15,319 --> 00:04:19,829 Vale 73 00:04:19,829 --> 00:04:22,689 Otro tema muy importante 74 00:04:22,689 --> 00:04:23,889 Muy muy importante 75 00:04:23,889 --> 00:04:26,089 Es el concepto de these 76 00:04:26,089 --> 00:04:27,149 Vale 77 00:04:27,149 --> 00:04:29,850 Vamos a pillar un ejemplo 78 00:04:29,850 --> 00:04:32,449 ¿Se acuerdan si este era el coche 79 00:04:32,449 --> 00:04:33,670 Que hemos utilizado el otro día? 80 00:04:34,529 --> 00:04:36,389 Ahora, yo aquí dentro 81 00:04:36,389 --> 00:04:37,750 Estoy utilizando 82 00:04:37,750 --> 00:04:39,290 Un constructor 83 00:04:39,290 --> 00:04:42,769 Estoy utilizando varios métodos 84 00:04:42,769 --> 00:04:43,670 Y cosas por el estilo 85 00:04:43,670 --> 00:04:46,370 Esto es una clase 86 00:04:46,370 --> 00:04:48,930 Hay un objeto aquí 87 00:04:48,930 --> 00:04:55,769 En el método main, sí 88 00:04:55,769 --> 00:04:57,230 Pero cuando yo defino la clase 89 00:04:57,230 --> 00:04:58,709 O se quito el método main 90 00:04:58,709 --> 00:04:59,689 Hay un objeto 91 00:04:59,689 --> 00:05:04,879 Hay una definición de un objeto 92 00:05:04,879 --> 00:05:06,120 Hay un molde para objetos 93 00:05:06,120 --> 00:05:08,839 Pero un objeto como tal no existe 94 00:05:08,839 --> 00:05:12,040 No existirá hasta que en un main 95 00:05:12,040 --> 00:05:13,079 Yo haga un new 96 00:05:13,079 --> 00:05:14,720 ¿Queda claro? 97 00:05:14,720 --> 00:05:25,180 O sea, existe el objeto como descripción en general, como clase, pero no existe una instancia de esa clase hasta que no cree la instancia de esa clase. 98 00:05:26,220 --> 00:05:34,720 Y si yo aquí dentro, por alguna razón, quisiera hacer referencia al objeto construido. 99 00:05:36,160 --> 00:05:41,639 O sea, yo aquí quiero hacer algo para decir, oye, mira, a este punto pilla el objeto que eres tú, 100 00:05:41,639 --> 00:05:47,500 Porque este cambiamatricula lo han llamado sobre un objeto 101 00:05:47,500 --> 00:05:52,800 Y si yo quiero hacer referencia desde aquí dentro a este objeto sobre el que le han llamado 102 00:05:52,800 --> 00:05:55,579 Aquí llamaban sobre C1 103 00:05:55,579 --> 00:05:57,920 Aquí dice C1.descríbete 104 00:05:57,920 --> 00:06:01,779 Si yo ahora dentro de escribete aquí en este código de aquí 105 00:06:01,779 --> 00:06:05,279 Quisiera hacer referencia a este objeto C1 106 00:06:05,279 --> 00:06:07,519 ¿Cómo podría hacerlo? 107 00:06:07,860 --> 00:06:14,420 Pero no existe 108 00:06:14,420 --> 00:06:16,199 Porque yo esto lo quito ahora 109 00:06:16,199 --> 00:06:20,879 ¿Esto? Vale 110 00:06:20,879 --> 00:06:23,579 Ahora, yo sé que alguno me llamará 111 00:06:23,579 --> 00:06:25,579 ¿Sí? 112 00:06:26,360 --> 00:06:28,300 Pero ¿cómo puedo saber yo? 113 00:06:28,779 --> 00:06:30,980 ¿Cómo puedo hacer referencia a mí mismo? 114 00:06:31,620 --> 00:06:32,759 ¿Al objeto? 115 00:06:33,579 --> 00:06:36,240 Porque descríbete será llamado sobre un objeto en un cierto momento 116 00:06:36,240 --> 00:06:37,600 Entonces, si yo llegara allí 117 00:06:37,600 --> 00:06:40,459 Este objeto existe, porque si no, no podría ser llamado descríbete 118 00:06:40,459 --> 00:06:45,740 ¿Cómo hago referencia al objeto sobre el que se ha llamado desde dentro de la clase? 119 00:06:45,740 --> 00:06:48,579 Donde estoy pensando de forma genérica 120 00:06:48,579 --> 00:06:49,759 Todavía no lo he creado 121 00:06:49,759 --> 00:06:51,019 No puedo poner C1 aquí 122 00:06:51,019 --> 00:06:52,079 C1 no existe 123 00:06:52,079 --> 00:06:54,199 ¿Entendéis cuál es el problema? 124 00:06:57,319 --> 00:06:58,939 Pero esa es la clase, no es un objeto 125 00:06:58,939 --> 00:07:00,220 Entonces todos se llaman igual 126 00:07:00,220 --> 00:07:06,110 Con la palabra mágica 127 00:07:06,110 --> 00:07:06,889 This 128 00:07:06,889 --> 00:07:10,129 Cuando tú usas this 129 00:07:10,129 --> 00:07:12,709 Estás diciendo este objeto 130 00:07:12,709 --> 00:07:14,069 ¿Cuál? 131 00:07:14,490 --> 00:07:16,730 El objeto sobre el que la has llamado 132 00:07:16,730 --> 00:07:18,310 Si yo 133 00:07:18,310 --> 00:07:23,170 Llamaré C1 134 00:07:23,170 --> 00:07:32,490 descríbete y aquí dentro uso this, será el c1. Si yo ahora uso c2.descríbete, this 135 00:07:32,490 --> 00:07:41,230 se referirá a este c2, al objeto sobre el que se ha llamado. ¿Para qué sirve esto? 136 00:07:42,889 --> 00:07:49,610 Mira, el primer uso sirve, ¿vale? Os daréis cuenta en el futuro. Pero el primer uso básico 137 00:07:49,610 --> 00:07:51,970 que se hace, es que tú tienes 138 00:07:51,970 --> 00:07:54,050 aquí string matrícula 139 00:07:54,050 --> 00:07:55,810 string modelo, string velocidad 140 00:07:55,810 --> 00:07:57,529 máxima, ¿os acordáis? y el 141 00:07:57,529 --> 00:07:59,509 constructor, nosotros habíamos 142 00:07:59,509 --> 00:08:01,889 utilizado ma, mo, vean 143 00:08:01,889 --> 00:08:05,730 ¿si? porque ma es la matrícula 144 00:08:05,730 --> 00:08:07,569 mo es el modelo, ahora cuando tú 145 00:08:07,569 --> 00:08:09,629 vas a ver el código 146 00:08:09,629 --> 00:08:11,230 ¿vale? vas a ver la 147 00:08:11,230 --> 00:08:13,490 la ayuda 148 00:08:13,490 --> 00:08:14,170 de este 149 00:08:14,170 --> 00:08:17,050 magnífica clase coche que has hecho 150 00:08:17,050 --> 00:08:18,850 y te dicen, oye mira 151 00:08:18,850 --> 00:08:20,629 Para construir un coche tienes que dar 152 00:08:20,629 --> 00:08:21,649 MAMOVEAN 153 00:08:21,649 --> 00:08:24,529 ¿Tú sabes qué es MAMOVEAN? 154 00:08:26,660 --> 00:08:27,420 Imagínate que 155 00:08:27,420 --> 00:08:31,110 Sacamos sólo esto 156 00:08:31,110 --> 00:08:44,200 Y te dicen, oye mira, para crear un coche 157 00:08:44,200 --> 00:08:46,240 Esto es como tienes que hacer 158 00:08:46,240 --> 00:08:47,120 Tienes que hacer un new 159 00:08:47,120 --> 00:08:49,620 Y luego le pones MAMOVEAN 160 00:08:49,620 --> 00:08:52,340 ¿Está claro? 161 00:08:53,220 --> 00:08:54,379 ¿De qué se está pidiendo? 162 00:08:54,379 --> 00:08:56,580 No, sería mucho más claro 163 00:08:56,580 --> 00:08:58,860 Si esto 164 00:08:58,860 --> 00:09:00,379 Fose matrícula 165 00:09:00,379 --> 00:09:13,120 matrícula, esto fuese modelo, esto fuese velocidad máxima y esto fuera año fabricación. 166 00:09:13,500 --> 00:09:17,480 ¿A qué hora? Ya es más fácil. 167 00:09:18,320 --> 00:09:19,460 Pero ¿cuál es el problema? 168 00:09:19,919 --> 00:09:23,940 Que si yo he usado matrícula aquí y ahora le pongo matrícula aquí, 169 00:09:28,019 --> 00:09:33,519 él se lía, porque para él dentro de este bloque matrícula es esta. 170 00:09:33,519 --> 00:09:56,360 Entonces, le tengo que decir, oye, matrícula esta, o modelo, o velocidad máxima, o año de fabricación 171 00:09:56,360 --> 00:10:05,899 No es este de aquí, pero yo quiero que este, que sería este, esto es correcto, lo quiero poner aquí dentro 172 00:10:05,899 --> 00:10:13,419 ¿Queda claro? ¿Queda claro esto? ¿Cuál es el problema? 173 00:10:13,419 --> 00:10:20,320 Entonces, ¿cómo puedo diferenciar esta matrícula de esta matrícula? 174 00:10:27,159 --> 00:10:35,720 Pon esta matrícula y ponla dentro de este objeto su atributo matrícula. 175 00:10:40,220 --> 00:10:40,720 ¿Se entiende? 176 00:10:42,220 --> 00:10:43,039 Esto es sutil. 177 00:10:51,320 --> 00:10:55,000 Pero será siempre este objeto, el objeto sobre el que tú lo llamas. 178 00:10:56,620 --> 00:10:59,639 Aquí en un cierto sentido lo estás construyendo. 179 00:10:59,639 --> 00:11:02,480 Entonces tú tienes unos parámetros que te han dado desde fuera 180 00:11:02,480 --> 00:11:04,539 Y un objeto que estás construyendo 181 00:11:04,539 --> 00:11:08,100 Y tú dices, pilla la variable matrícula 182 00:11:08,100 --> 00:11:09,320 Que me has dado como parámetro 183 00:11:09,320 --> 00:11:12,639 Y lo guardas en accede a este objeto 184 00:11:12,639 --> 00:11:13,899 Al objeto que estoy creando 185 00:11:13,899 --> 00:11:16,259 En su campo matrícula 186 00:11:16,259 --> 00:11:18,179 Y allí dentro es donde pones el valor 187 00:11:18,179 --> 00:11:21,419 Entonces para hacer esto 188 00:11:21,419 --> 00:11:24,899 Dis.model es igual a modelo 189 00:11:24,899 --> 00:11:30,779 Si velocidad máxima esta de aquí es mayor o igual a cero 190 00:11:30,779 --> 00:11:35,600 Pues entonces guarda this.velocidadMáxima es igual a velocidadMáxima 191 00:11:35,600 --> 00:11:38,860 this.velocidadMáxima es igual a 1 si no 192 00:11:38,860 --> 00:11:44,620 Y this.añoFabricación es igual a año 193 00:11:44,620 --> 00:11:46,019 ¿Sí? 194 00:11:47,179 --> 00:11:49,820 Cuando no hay ambigüedad 195 00:11:49,820 --> 00:11:51,840 Porque aquí no hay ambigüedad 196 00:11:51,840 --> 00:11:56,080 Si yo uso modelo, él mirará directamente este de aquí 197 00:11:56,080 --> 00:12:00,000 Pero en realidad esto no sería modelo 198 00:12:00,000 --> 00:12:01,059 Esto sería 199 00:12:01,059 --> 00:12:02,960 Dis.model 200 00:12:02,960 --> 00:12:07,980 Es implícito 201 00:12:07,980 --> 00:12:10,299 Y cuando no hay problemas de 202 00:12:10,299 --> 00:12:13,539 Choque de variables 203 00:12:13,539 --> 00:12:15,039 Que se llaman de la misma forma 204 00:12:15,039 --> 00:12:17,600 Pues esto, él lo entiende directamente 205 00:12:17,600 --> 00:12:18,659 ¿Veis que me lo pone en azul? 206 00:12:19,419 --> 00:12:20,840 Está entendiendo que es este 207 00:12:20,840 --> 00:12:21,620 Azul 208 00:12:21,620 --> 00:12:25,279 Pero si yo aquí, por alguna razón 209 00:12:25,279 --> 00:12:27,580 Pusiera string 210 00:12:27,580 --> 00:12:28,799 Modelo 211 00:12:28,799 --> 00:12:31,480 Pues entonces ahora ya él se lía 212 00:12:31,480 --> 00:12:33,519 Él dice, vale, si tú me has dado modelo este aquí 213 00:12:33,519 --> 00:12:35,340 Pues este de aquí tiene que ser este 214 00:12:35,340 --> 00:12:37,860 Y si yo quiero hacer referencia 215 00:12:37,860 --> 00:12:39,299 Al de este objeto 216 00:12:39,299 --> 00:12:45,019 ¿Sí? 217 00:12:46,419 --> 00:12:47,740 Ahora, esto del dis 218 00:12:47,740 --> 00:12:50,639 Esta es la forma más básica que se puede utilizar 219 00:12:50,639 --> 00:12:51,440 Dis, ¿vale? 220 00:12:51,620 --> 00:12:54,100 En realidad luego se puede hacer 221 00:12:54,100 --> 00:12:55,899 Cosas interesantes, ¿vale? 222 00:12:56,000 --> 00:12:58,419 Imaginados un método que al final 223 00:12:58,419 --> 00:13:00,440 Tengo public 224 00:13:00,440 --> 00:13:02,059 Método 225 00:13:02,059 --> 00:13:04,059 Mi método, que se yo, no se que hace 226 00:13:04,059 --> 00:13:06,879 Y yo quiero que al final 227 00:13:06,879 --> 00:13:08,539 De lo que haga aquí 228 00:13:08,539 --> 00:13:10,179 No sé qué hace 229 00:13:10,179 --> 00:13:12,919 Yo quiero devolver 230 00:13:12,919 --> 00:13:15,019 Este objeto 231 00:13:15,019 --> 00:13:17,320 Que el resultado de esto 232 00:13:17,320 --> 00:13:19,039 Es devolver el objeto mismo 233 00:13:19,039 --> 00:13:20,700 El objeto sobre el que he sido llamado 234 00:13:20,700 --> 00:13:24,759 Pues devolvería un coche 235 00:13:24,759 --> 00:13:27,990 Y sería un 236 00:13:27,990 --> 00:13:29,830 Return this 237 00:13:29,830 --> 00:13:39,070 Entonces este es un concepto que ya empieza 238 00:13:39,070 --> 00:13:41,330 A dar un saltito más en adelante 239 00:13:41,330 --> 00:13:42,509 En el 240 00:13:42,509 --> 00:13:44,429 mundo de la 241 00:13:44,429 --> 00:13:46,750 orientación a objetos 242 00:13:46,750 --> 00:13:48,590 es un poquito retorcido 243 00:13:48,590 --> 00:13:50,850 y hay que trabajar 244 00:13:50,850 --> 00:13:53,190 un poquito sobre ello para entenderlo 245 00:13:53,190 --> 00:13:54,970 ¿vale? ahora que habéis visto la primera vez 246 00:13:54,970 --> 00:13:57,149 aparecerá alguna vez 247 00:13:57,149 --> 00:13:59,250 en esta vida, habrá algunos momentos 248 00:13:59,250 --> 00:14:01,070 de vuestra vida en que diréis, oye mira yo tengo 249 00:14:01,070 --> 00:14:03,509 que programar algo aquí, tengo que hacer referencia 250 00:14:03,509 --> 00:14:04,470 a este objeto 251 00:14:04,470 --> 00:14:07,210 pero no sé cómo llamarlo este objeto 252 00:14:07,210 --> 00:14:08,269 no sé cómo hacerlo 253 00:14:08,269 --> 00:14:10,789 pues entonces, this 254 00:14:10,789 --> 00:14:12,070 ¿sí? 255 00:14:12,509 --> 00:14:18,370 Diga, a este objeto. 256 00:14:22,029 --> 00:14:25,590 Cuando tú estás dentro de este método, ¿sobre qué objeto lo estás llamando? 257 00:14:28,419 --> 00:14:29,779 Aquí, yo estoy aquí. 258 00:14:31,970 --> 00:14:33,070 ¿Sobre qué objeto lo estoy llamando? 259 00:14:34,110 --> 00:14:35,850 No, frenar no es un objeto, es un método. 260 00:14:40,460 --> 00:14:49,559 Sobre un objeto abstracto de tipo coche, porque todos los coches del mundo pueden frenar, según tu definición, 261 00:14:49,559 --> 00:14:52,080 pero aquí no tienes un objeto 262 00:14:52,080 --> 00:14:56,460 porque el objeto se creará en fase de main 263 00:14:56,460 --> 00:14:58,279 donde tú crearás un objeto 264 00:14:58,279 --> 00:15:00,659 y llamarás frenar sobre ese objeto 265 00:15:00,659 --> 00:15:02,159 c1.frenar 266 00:15:02,159 --> 00:15:06,399 entonces ahora el objeto sobre el que lo estás llamando es c1 267 00:15:06,399 --> 00:15:08,840 pero desde aquí, desde fuera 268 00:15:08,840 --> 00:15:10,440 desde donde estás llamando 269 00:15:10,440 --> 00:15:11,919 desde donde estás utilizando 270 00:15:11,919 --> 00:15:14,759 tú sabes que frenar lo has llamado sobre c1 271 00:15:14,759 --> 00:15:17,240 pero cuando estás aquí dentro 272 00:15:17,240 --> 00:15:19,919 No tienes una referencia a C1 273 00:15:19,919 --> 00:15:23,620 Entonces tienes un puntero a ti mismo 274 00:15:23,620 --> 00:15:29,120 No es un objeto 275 00:15:29,120 --> 00:15:33,379 Es una referencia al objeto en el que estás 276 00:15:33,379 --> 00:15:35,700 Si frenar lo llamas sobre C1 277 00:15:35,700 --> 00:15:37,840 Este dice se referirá a C1 278 00:15:37,840 --> 00:15:39,700 Si lo llamas sobre C2 279 00:15:39,700 --> 00:15:41,080 Se referirá a C2 280 00:15:41,080 --> 00:15:42,539 Y si lo llamas sobre gato 281 00:15:42,539 --> 00:15:44,820 Pues estará refiriendo al gato 282 00:15:44,820 --> 00:15:48,519 Es un comodín para decir el propio 283 00:15:48,519 --> 00:16:02,519 Es que aquí tienes otro tipo de problema 284 00:16:02,519 --> 00:16:05,159 Tienes una variable local 285 00:16:05,159 --> 00:16:06,200 Que se llama modelo 286 00:16:06,200 --> 00:16:09,159 Y otra variable que se llama modelo 287 00:16:09,159 --> 00:16:10,799 Que pero es una parte 288 00:16:10,799 --> 00:16:13,139 De la estructura de tu coche 289 00:16:13,139 --> 00:16:14,820 Todos los coches tienen un modelo 290 00:16:14,820 --> 00:16:16,559 Y tienes que poder diferenciar 291 00:16:16,559 --> 00:16:18,200 Esta de esta 292 00:16:18,200 --> 00:16:21,000 Si tú aquí dentro usas solo modelo 293 00:16:21,000 --> 00:16:23,019 Él hace referencia 294 00:16:23,019 --> 00:16:24,019 A este modelo de aquí 295 00:16:24,019 --> 00:16:25,820 ¿Vale? 296 00:16:26,000 --> 00:16:28,259 Si tú quieres hacer referencia a esto 297 00:16:28,259 --> 00:16:30,639 Es como si desde aquí 298 00:16:30,639 --> 00:16:32,600 Tú accedieras 299 00:16:32,600 --> 00:16:36,919 A c1.modelo 300 00:16:36,919 --> 00:16:40,190 Porque aquí tú tienes 301 00:16:40,190 --> 00:16:42,590 Y esto lo pones en string 302 00:16:42,590 --> 00:16:44,210 String s 303 00:16:44,210 --> 00:16:45,409 Es igual 304 00:16:45,409 --> 00:16:48,429 Porque tú aquí tienes una referencia c1 305 00:16:48,429 --> 00:16:50,149 Entonces la puedes utilizar 306 00:16:50,149 --> 00:16:51,690 Y decir quiero el modelo 307 00:16:51,690 --> 00:16:53,049 Pero de que objeto 308 00:16:53,049 --> 00:16:54,009 Del objeto c1 309 00:16:54,009 --> 00:16:56,429 Pero cuando tú estás dentro 310 00:16:56,429 --> 00:17:00,129 de la propia definición de los métodos 311 00:17:00,129 --> 00:17:01,549 tú no tienes 312 00:17:01,549 --> 00:17:03,070 o puede poner C1 313 00:17:03,070 --> 00:17:05,809 porque C1 no es nada 314 00:17:05,809 --> 00:17:07,750 entonces necesitas 315 00:17:07,750 --> 00:17:09,769 una palabra comodín 316 00:17:09,769 --> 00:17:11,769 que te diga, oye, sea cual sea 317 00:17:11,769 --> 00:17:13,670 este objeto, tú vete a 318 00:17:13,670 --> 00:17:15,970 este objeto a su parte modelo 319 00:17:15,970 --> 00:17:19,490 este objeto 320 00:17:19,490 --> 00:17:21,450 ¿cuál objeto? el objeto sobre el que 321 00:17:21,450 --> 00:17:22,849 se ha llamado este constructor 322 00:17:22,849 --> 00:17:25,369 el objeto que se está construyendo en este caso 323 00:17:25,369 --> 00:17:27,509 o en este caso aquí, si yo pongo 324 00:17:27,509 --> 00:17:27,950 esto 325 00:17:27,950 --> 00:17:31,250 está diciendo, el modelo 326 00:17:31,250 --> 00:17:33,630 sobre el que, el coche 327 00:17:33,630 --> 00:17:35,509 sobre el que se ha llamado frenar 328 00:17:35,509 --> 00:17:37,410 pues esta es una 329 00:17:37,410 --> 00:17:38,549 referencia a ese objeto 330 00:17:38,549 --> 00:17:41,450 si tú lo llamas sobre C1, esto se referirá 331 00:17:41,450 --> 00:17:43,029 a C1, si tú lo llamas sobre C7 332 00:17:43,029 --> 00:17:45,730 se referirá a Cristiano Ronaldo 333 00:17:45,730 --> 00:18:06,039 porque 334 00:18:06,039 --> 00:18:07,599 cuando, esto para 335 00:18:07,599 --> 00:18:09,599 no entiendo tu pregunta 336 00:18:09,599 --> 00:18:11,960 en general que es un constructor, me estás preguntando 337 00:18:11,960 --> 00:18:14,180 para crear 338 00:18:14,180 --> 00:18:17,730 un objeto, se puede crear 339 00:18:17,730 --> 00:18:18,329 pero está vacío 340 00:18:18,329 --> 00:18:23,309 si yo tengo un coche 341 00:18:23,309 --> 00:18:28,880 vamos a eliminar 342 00:18:28,880 --> 00:18:30,799 esto, vamos a hacer una copia 343 00:18:30,799 --> 00:18:36,839 están objetos 344 00:18:36,839 --> 00:18:40,079 vamos a copiar esto 345 00:18:40,079 --> 00:18:43,160 creamos coche 2 346 00:18:43,160 --> 00:18:45,480 y vamos a trabajar sobre coche 2 347 00:18:45,480 --> 00:18:51,859 ¿vale? entonces 348 00:18:51,859 --> 00:18:54,200 imaginémonos que yo 349 00:18:54,200 --> 00:18:55,980 me cargo este 350 00:18:55,980 --> 00:18:58,140 constructor de aquí, ¿vale? fuera 351 00:18:58,140 --> 00:18:59,960 ahora tengo un problema 352 00:18:59,960 --> 00:19:02,220 Porque aquí yo creaba coches 353 00:19:02,220 --> 00:19:05,640 Pero ahora no lo puedo crear 354 00:19:05,640 --> 00:19:06,339 El coche 355 00:19:06,339 --> 00:19:08,920 La única cosa que puedo hacer es crear 356 00:19:08,920 --> 00:19:10,380 Un coche 357 00:19:10,380 --> 00:19:12,819 Un coche 2 358 00:19:12,819 --> 00:19:14,920 Pero este coche 2 359 00:19:14,920 --> 00:19:17,299 No tiene nada 360 00:19:17,299 --> 00:19:19,319 Si ahora yo lanzo 361 00:19:19,319 --> 00:19:19,859 ¿Lo que hace? 362 00:19:24,019 --> 00:19:24,579 Explota 363 00:19:24,579 --> 00:19:27,980 Vamos a ver porque tengo otro 364 00:19:27,980 --> 00:19:30,200 Tengo otro por aquí 365 00:19:30,200 --> 00:19:31,579 ¿Dónde está? 366 00:19:31,680 --> 00:19:32,359 Aquí 367 00:19:32,359 --> 00:19:34,460 le quito todo esto 368 00:19:34,460 --> 00:19:37,880 ya está, he creado un coche 369 00:19:37,880 --> 00:19:39,799 sí, un coche de tipo coche 2 370 00:19:39,799 --> 00:19:41,319 sí, lo he creado 371 00:19:41,319 --> 00:19:43,819 ¿vale? aquí lo que he hecho 372 00:19:43,819 --> 00:19:45,480 para que no estaba, es simplemente 373 00:19:45,480 --> 00:19:46,680 he quitado el constructor 374 00:19:46,680 --> 00:19:49,039 ahora no hay constructor en esta clase 375 00:19:49,039 --> 00:19:51,259 ¿vale? entonces yo 376 00:19:51,259 --> 00:19:52,740 si no hay constructores 377 00:19:52,740 --> 00:19:55,240 puedo crear un constructor vacío 378 00:19:55,240 --> 00:19:57,480 pero ahora lo lanzo 379 00:19:58,000 --> 00:20:02,460 a feria internacional 380 00:20:02,460 --> 00:20:02,900 del null 381 00:20:02,900 --> 00:20:07,059 Porque todo está 382 00:20:07,059 --> 00:20:08,900 ¿Cómo se dice? 383 00:20:12,059 --> 00:20:12,700 Inicializado 384 00:20:12,700 --> 00:20:15,480 A su valor por defecto 385 00:20:15,480 --> 00:20:17,180 Porque en ningún momento 386 00:20:17,180 --> 00:20:18,799 Ha habido un constructor 387 00:20:18,799 --> 00:20:20,960 Que ha metido lo que tenía que meter 388 00:20:20,960 --> 00:20:22,599 En la cosa, puedo crear coches 389 00:20:22,599 --> 00:20:24,119 De modelo nul 390 00:20:24,119 --> 00:20:26,279 ¿Cómo es eso? 391 00:20:26,759 --> 00:20:28,799 De matrícula nul, modelo nul 392 00:20:28,799 --> 00:20:30,960 Velocidad máxima cero y año de fabricación cero 393 00:20:30,960 --> 00:20:33,619 De hecho, todos los estoy construyendo así 394 00:20:33,619 --> 00:20:35,500 Y luego debería 395 00:20:35,500 --> 00:20:37,900 Aquí 396 00:20:37,900 --> 00:20:40,980 Acceder a cada campo 397 00:20:40,980 --> 00:20:45,140 C1.matricula 398 00:20:45,140 --> 00:20:49,079 Es igual a mat01 399 00:20:49,079 --> 00:20:54,160 C1. 400 00:20:55,160 --> 00:20:56,339 ¿Qué es esto? 401 00:20:57,859 --> 00:20:58,539 Modelo 402 00:20:58,539 --> 00:21:02,680 No lo sé 403 00:21:02,680 --> 00:21:06,839 Me sale solo me can 404 00:21:06,839 --> 00:21:18,750 Y ahora, cuando lo lanzo, cuando escribe el C1, sí que es un megane y sigue teniendo su matrícula. 405 00:21:19,390 --> 00:21:21,410 Pero es mucho más incómodo. 406 00:21:22,609 --> 00:21:29,750 Es más, yo podría querer que estos datos de aquí no sean accesibles. 407 00:21:31,410 --> 00:21:37,970 Porque si yo permito a estos datos de ser accesibles, la gente puede hacer lo que le da la gana con esto de aquí. 408 00:21:37,970 --> 00:21:41,589 Puede mañana llegar y decir ahora mi matrícula es otra 409 00:21:41,589 --> 00:21:43,750 Ahora mi modelo cambia 410 00:21:43,750 --> 00:21:45,529 Ahora mi velocidad máxima ha cambiado 411 00:21:45,529 --> 00:21:50,809 Y si yo los protejo, pues entonces ya esto no lo puedes hacer 412 00:21:50,809 --> 00:21:55,829 Entonces, lo que se hace es decir, vale 413 00:21:55,829 --> 00:22:01,849 Voy a crearme métodos especiales que me construyen coches 414 00:22:01,849 --> 00:22:03,730 En base a los parámetros que le paso 415 00:22:03,730 --> 00:22:06,450 Y entonces 416 00:22:06,450 --> 00:22:09,490 Hacemos esto 417 00:22:09,490 --> 00:22:12,759 Este aquí te dice 418 00:22:12,759 --> 00:22:14,380 Este es un método para construir coches 419 00:22:14,380 --> 00:22:17,119 Que requiere cuatro parámetros 420 00:22:17,119 --> 00:22:20,140 Y una vez que me dan los parámetros 421 00:22:20,140 --> 00:22:21,519 Yo los guardo 422 00:22:21,519 --> 00:22:22,599 De golpe 423 00:22:22,599 --> 00:22:24,440 En sus propios atributos 424 00:22:24,440 --> 00:22:25,759 Y cuidado 425 00:22:25,759 --> 00:22:27,180 Yo puedo hacer también 426 00:22:27,180 --> 00:22:28,539 Algún tipo de 427 00:22:28,539 --> 00:22:29,559 Control 428 00:22:29,559 --> 00:22:30,880 Yo puedo decir que si 429 00:22:30,880 --> 00:22:32,480 La velocidad máxima que me has puesto aquí 430 00:22:32,480 --> 00:22:33,259 No es 431 00:22:33,259 --> 00:22:34,720 No me gusta 432 00:22:34,720 --> 00:22:38,299 Pues entonces pongo una velocidad máxima por defecto 433 00:22:38,299 --> 00:22:39,299 O algo por el estilo 434 00:22:39,299 --> 00:22:41,640 Pero puedes hacer control sobre lo que te da aquí 435 00:22:41,640 --> 00:22:43,740 La matrícula no puede ser la que te da la gana 436 00:22:43,740 --> 00:22:47,079 La matrícula tiene que ser con un determinado código, algoritmo 437 00:22:47,079 --> 00:22:49,420 Que te da la matrícula para decir si es buena o no 438 00:22:49,420 --> 00:22:51,799 Pues yo puedo hacer que cuando tú me pasas una matrícula 439 00:22:51,799 --> 00:22:53,660 Aquí haga las comprobaciones necesarias 440 00:22:53,660 --> 00:22:56,039 Para ver si es una matrícula efectivamente buena 441 00:22:56,039 --> 00:22:58,160 Si es buena, creo el objeto 442 00:22:58,160 --> 00:23:00,259 Si no es buena, no creo el objeto 443 00:23:00,259 --> 00:23:02,819 ¿Se entiende? 444 00:23:04,200 --> 00:23:04,799 Más o menos 445 00:23:04,799 --> 00:23:06,740 ¿Dudas? 446 00:23:10,680 --> 00:23:11,039 Vale 447 00:23:11,039 --> 00:23:15,519 Nota, ya que estamos en esto 448 00:23:15,519 --> 00:23:18,460 Yo aquí tengo 449 00:23:18,460 --> 00:23:20,940 Un constructor 450 00:23:20,940 --> 00:23:23,539 Vacío 451 00:23:23,539 --> 00:23:25,339 ¿Sí? 452 00:23:26,079 --> 00:23:29,119 Esto se llama constructor por defecto 453 00:23:29,119 --> 00:23:32,579 Cualquier clase que vosotros creáis 454 00:23:32,579 --> 00:23:34,200 Por defecto 455 00:23:34,200 --> 00:23:37,240 Tiene un constructor sin parámetros 456 00:23:37,240 --> 00:23:39,200 que os permite crear 457 00:23:39,200 --> 00:23:40,779 un objeto de esa clase 458 00:23:40,779 --> 00:23:43,240 es el constructor por defecto 459 00:23:44,900 --> 00:23:46,319 ahora 460 00:23:46,319 --> 00:23:48,839 si yo creo un cualquier otro 461 00:23:48,839 --> 00:23:49,640 constructor 462 00:23:49,640 --> 00:23:53,119 public coche2 463 00:23:53,119 --> 00:23:55,180 string 464 00:23:55,180 --> 00:23:56,599 matricula 465 00:23:56,599 --> 00:23:59,819 que lo que hace es 466 00:23:59,819 --> 00:24:01,240 this.matricula 467 00:24:02,079 --> 00:24:03,240 es igual a matricula 468 00:24:03,859 --> 00:24:07,069 this.modelo 469 00:24:07,069 --> 00:24:27,250 10.modelo es igual a, no sé, 10.velocidad máxima es igual a 0 y 10.añofabricación es igual a 0. 470 00:24:27,250 --> 00:24:31,990 Este es un constructor que me permite dar solo la matrícula 471 00:24:31,990 --> 00:24:34,109 Y lo que hace es poner la matrícula dentro 472 00:24:34,109 --> 00:24:39,150 Y a todos los otros parámetros le da un parámetro básico 473 00:24:39,150 --> 00:24:42,410 Un valor por defecto 474 00:24:42,410 --> 00:24:46,049 En el momento en que creo un constructor 475 00:24:46,049 --> 00:24:50,150 Pierdo el constructor por defecto 476 00:24:50,150 --> 00:24:51,509 Ya no lo tengo 477 00:24:51,509 --> 00:24:57,980 El constructor por defecto existe solo 478 00:24:57,980 --> 00:25:01,440 Si no existen otros constructores 479 00:25:01,440 --> 00:25:03,440 Queda claro hasta aquí 480 00:25:03,440 --> 00:25:08,380 Si yo vuelvo a quitar esto 481 00:25:08,380 --> 00:25:12,230 No hay constructores 482 00:25:12,230 --> 00:25:13,890 Y por lo tanto él dice 483 00:25:13,890 --> 00:25:15,329 Ah, muy bien, me vale 484 00:25:15,329 --> 00:25:18,410 Usaré el constructor por defecto 485 00:25:18,410 --> 00:25:21,809 Si yo pongo un constructor 486 00:25:21,809 --> 00:25:23,490 Es porque le estoy diciendo 487 00:25:23,490 --> 00:25:26,829 Oye, mira, no me crees objetos tú 488 00:25:26,829 --> 00:25:29,329 Te estoy diciendo yo cómo se crean objetos 489 00:25:29,329 --> 00:25:30,190 Se crean así 490 00:25:30,190 --> 00:25:32,369 esta es la forma correcta de crear estos 491 00:25:32,369 --> 00:25:34,250 objetos, por lo tanto él dice 492 00:25:34,250 --> 00:25:35,970 ah vale, si te encargas tú 493 00:25:35,970 --> 00:25:38,390 de decirme cómo se crean estos objetos 494 00:25:38,390 --> 00:25:39,829 ya te quito 495 00:25:39,829 --> 00:25:42,329 la forma por defecto que había 496 00:25:42,329 --> 00:25:44,329 creado yo, ya no se puede hacer por 497 00:25:44,329 --> 00:25:45,829 defecto, se hace como dices tú 498 00:25:45,829 --> 00:25:48,450 porque tú sabrás que controles 499 00:25:48,450 --> 00:25:50,250 o que cosas has hecho 500 00:25:50,250 --> 00:25:52,190 aquí dentro y seguramente estás haciendo 501 00:25:52,190 --> 00:25:54,450 un trabajo más concreto 502 00:25:54,450 --> 00:25:56,349 y mejor con respecto al 503 00:25:56,349 --> 00:25:57,769 mío que era general de 504 00:25:57,769 --> 00:26:00,470 Tú no has hecho ningún constructor, te hago construir un objeto 505 00:26:00,470 --> 00:26:01,910 Pero es un objeto vacío 506 00:26:01,910 --> 00:26:03,410 Se entiende la diferencia 507 00:26:03,410 --> 00:26:16,779 Porque imagínate que tú al momento 508 00:26:16,779 --> 00:26:19,079 De crear un objeto 509 00:26:19,079 --> 00:26:19,900 Sea cual sea 510 00:26:19,900 --> 00:26:21,740 Todavía no sabes 511 00:26:21,740 --> 00:26:23,940 Las características de ese objeto 512 00:26:23,940 --> 00:26:25,319 Tú creas un coche 513 00:26:25,319 --> 00:26:26,940 Pero tu 514 00:26:26,940 --> 00:26:29,339 Tu 515 00:26:29,339 --> 00:26:31,859 Sistema 516 00:26:31,859 --> 00:26:34,619 Es de una planta de construcción de coches 517 00:26:34,619 --> 00:26:36,880 Vale, ¿qué le pones al color del coche 518 00:26:36,880 --> 00:26:41,339 cuando al principio es solo un trozo de hierro, tiene solo el chasis? 519 00:26:41,519 --> 00:26:42,259 ¿Qué color le pones? 520 00:26:44,400 --> 00:26:47,880 Entonces a lo mejor tú puedes crear un coche, ya tienes tu coche, es este coche de aquí. 521 00:26:48,400 --> 00:26:53,200 Y a lo mejor sí que el número de telar lo tienes, o todavía no, lo tendrás, no sé si es el número de telar. 522 00:26:53,200 --> 00:27:00,319 Lo que sea que tú te creas un molde vacío, en un cierto sentido, que tendrá esta estructura de aquí, 523 00:27:00,960 --> 00:27:04,180 pero todavía con todos los parámetros no formalizados, 524 00:27:04,460 --> 00:27:08,160 y los irás construyendo tú en las varias fases de proceso. 525 00:27:08,160 --> 00:27:10,960 Llamarás el método de pinta coche 526 00:27:10,960 --> 00:27:12,839 Que lo pintará con un valor 527 00:27:12,839 --> 00:27:15,039 Que te ha pasado por parámetro verde 528 00:27:15,039 --> 00:27:16,660 Y entonces pondrá que el coche 529 00:27:16,660 --> 00:27:17,460 Es color verde 530 00:27:17,460 --> 00:27:19,559 Y te lo irá rellenando 531 00:27:19,559 --> 00:27:22,700 Es para tener 532 00:27:22,700 --> 00:27:23,779 Al fin y al cabo flexibilidad 533 00:27:23,779 --> 00:27:25,680 En algunos casos lo puede tener 534 00:27:25,680 --> 00:27:27,980 Ahora, vale, perfecto 535 00:27:27,980 --> 00:27:29,619 Pero yo también tengo 536 00:27:29,619 --> 00:27:31,400 Este de aquí 537 00:27:31,400 --> 00:27:37,069 Puedo crear dos constructores 538 00:27:37,069 --> 00:27:39,130 Sí 539 00:27:39,130 --> 00:27:43,710 Este de aquí 540 00:27:43,710 --> 00:27:46,269 Construye un coche 541 00:27:46,269 --> 00:27:48,150 A partir solo de la matrícula 542 00:27:48,150 --> 00:27:49,289 Y todo el resto 543 00:27:49,289 --> 00:27:50,490 No se que es 544 00:27:50,490 --> 00:27:53,069 Lo pongo valores normales 545 00:27:53,069 --> 00:27:54,230 Y este de aquí 546 00:27:54,230 --> 00:27:56,710 Tiene cuatro parámetros 547 00:27:56,710 --> 00:27:59,329 Y pondrá los parámetros correctos 548 00:27:59,329 --> 00:28:00,269 En cada uno de ellos 549 00:28:00,269 --> 00:28:02,670 Ahora yo puedo hacer 550 00:28:02,670 --> 00:28:06,440 Un new 551 00:28:06,440 --> 00:28:08,099 Coche2 552 00:28:08,099 --> 00:28:09,400 De 553 00:28:09,400 --> 00:28:12,720 0010B 554 00:28:12,720 --> 00:28:19,220 Esto me crea un objeto 555 00:28:19,220 --> 00:28:22,400 Y también podría hacer 556 00:28:22,400 --> 00:28:23,619 Bueno, lo pongo arriba 557 00:28:23,619 --> 00:28:28,740 Este es un constructor válido 558 00:28:28,740 --> 00:28:31,880 Y también este es un constructor válido 559 00:28:31,880 --> 00:28:39,539 Algo 560 00:28:39,539 --> 00:28:40,799 9, 9 561 00:28:40,799 --> 00:28:42,519 Coma 562 00:28:42,519 --> 00:28:43,940 Que gane 563 00:28:43,940 --> 00:28:45,140 Coma 564 00:28:45,140 --> 00:28:47,819 33, 2 565 00:28:47,819 --> 00:28:51,809 Este también es válido 566 00:28:51,809 --> 00:28:52,990 ¿Sí? 567 00:28:53,349 --> 00:28:54,809 String, string, int, int 568 00:28:54,809 --> 00:28:56,869 O solo string 569 00:28:56,869 --> 00:28:59,490 Pero aquí sigue dándome error 570 00:28:59,490 --> 00:29:05,460 Entonces, ¿cómo puedo hacer yo 571 00:29:05,460 --> 00:29:08,380 A que esto no me dé error? 572 00:29:15,250 --> 00:29:17,190 Ah, pero yo esto 573 00:29:17,190 --> 00:29:19,670 Imaginamos que yo no tengo acceso a esto 574 00:29:19,670 --> 00:29:21,789 Esto lo está haciendo otro grupo 575 00:29:21,789 --> 00:29:24,029 Yo quiero que aquí no le explote a ellos 576 00:29:24,029 --> 00:29:28,710 ¿Cómo puedo hacer mi clase para que pueda hacer esto? 577 00:29:28,710 --> 00:29:30,869 Porque hemos dicho, una opción es borro todo 578 00:29:30,869 --> 00:29:32,470 ¿Vale? 579 00:29:33,130 --> 00:29:37,150 Si borro todos los dos constructores 580 00:29:37,150 --> 00:29:39,230 Pues ya está, esto funcionaría 581 00:29:39,230 --> 00:29:41,869 Y si tengo que coche 1 582 00:29:41,869 --> 00:29:43,609 C1 583 00:29:43,609 --> 00:29:45,109 Está definido así 584 00:29:45,109 --> 00:29:49,390 Y coche 2 585 00:29:49,390 --> 00:29:51,369 C2 está definido así 586 00:29:51,369 --> 00:29:53,890 Ahora como lo hago, porque no puedo borrar todo 587 00:29:53,890 --> 00:29:58,859 Creo otro constructor 588 00:29:58,859 --> 00:30:00,220 Que no tenga nada 589 00:30:00,220 --> 00:30:02,839 Public 590 00:30:02,839 --> 00:30:04,440 Coche 2 591 00:30:04,440 --> 00:30:05,579 De nada 592 00:30:05,579 --> 00:30:11,619 Lo que hará es algo parecido a esto 593 00:30:11,619 --> 00:30:15,460 Con los valores que tú quieres 594 00:30:15,460 --> 00:30:17,000 Por ejemplo aquí le podría poner null 595 00:30:17,000 --> 00:30:22,559 Ahora tengo tres constructores 596 00:30:22,559 --> 00:30:24,740 Uno que es un constructor sin parámetros 597 00:30:24,740 --> 00:30:26,500 Entonces me vale esto 598 00:30:26,500 --> 00:30:27,460 New 599 00:30:27,460 --> 00:30:30,680 Coche2 600 00:30:30,680 --> 00:30:32,519 Me vale 601 00:30:32,519 --> 00:30:37,519 Simplemente no tengo parámetros 602 00:30:37,519 --> 00:30:39,680 Y por lo tanto pondré parámetros por defecto 603 00:30:39,680 --> 00:30:41,259 O pondré parámetros míos 604 00:30:41,259 --> 00:30:42,259 O cosas por el estilo 605 00:30:42,259 --> 00:30:51,180 Tened en cuenta que el constructor por defecto que no hemos visto, en realidad es esto. 606 00:30:53,660 --> 00:30:54,859 Este es el constructor por defecto. 607 00:31:04,190 --> 00:31:09,829 Entonces, si yo no pongo ningún constructor, automáticamente tengo un constructor por defecto 608 00:31:09,829 --> 00:31:13,650 que me hace él por defecto, sin problemas. 609 00:31:14,390 --> 00:31:19,730 Si yo creo un constructor, pierdo ese constructor por defecto, 610 00:31:19,730 --> 00:31:21,789 Pero nadie me impide 611 00:31:21,789 --> 00:31:23,630 De volver a crearlo yo 612 00:31:23,630 --> 00:31:28,180 ¿Se entiende? 613 00:31:29,799 --> 00:31:30,319 ¿Dudas? 614 00:31:34,029 --> 00:31:36,009 Y esto más o menos es lo que dice 615 00:31:36,009 --> 00:31:38,109 Aquí, aquí 616 00:31:38,109 --> 00:31:39,130 Y el coso por el estilo 617 00:31:39,130 --> 00:31:41,930 Entonces, volviendo a lo del dis 618 00:31:41,930 --> 00:31:44,230 Veamos si aquí dice algo que se me ha olvidado 619 00:31:44,230 --> 00:31:46,369 Para invocar la ejecución de un método 620 00:31:46,369 --> 00:31:48,650 De un objeto es imprescindible conocer su dirección 621 00:31:48,650 --> 00:31:50,369 Almacenada a la variable de tipo referencia 622 00:31:50,369 --> 00:31:52,470 ¿Vale? O sea, necesito tener una referencia 623 00:31:52,470 --> 00:31:54,089 A un objeto para poder llamar su método 624 00:31:54,089 --> 00:31:55,869 ¿Vale? Esta dirección 625 00:31:55,869 --> 00:31:57,950 la ha de guardar en primera instancia 626 00:31:57,950 --> 00:31:59,970 que el código en el que se haga 627 00:31:59,970 --> 00:32:01,809 el new, ¿vale? o sea cuando 628 00:32:01,809 --> 00:32:03,769 hago c1 es igual a new 629 00:32:03,769 --> 00:32:06,150 coche, pues ahí ese c1 630 00:32:06,150 --> 00:32:07,829 es la referencia a mi objeto 631 00:32:07,829 --> 00:32:10,029 y ahora puedo hacer c1.frenar 632 00:32:10,029 --> 00:32:11,710 c1.acelerar 633 00:32:11,710 --> 00:32:13,250 y todas esas cosas, ¿vale? 634 00:32:13,990 --> 00:32:15,990 hay una excepción para esta regla ya que 635 00:32:15,990 --> 00:32:17,890 si un objeto quiere ejecutar un método 636 00:32:17,890 --> 00:32:19,690 propio, lo cual es bastante habitual 637 00:32:19,690 --> 00:32:22,269 necesita conocer su propia dirección 638 00:32:22,269 --> 00:32:23,970 ¿sí? 639 00:32:23,970 --> 00:32:25,970 Si yo desde dentro 640 00:32:25,970 --> 00:32:28,609 La misma declaración de los métodos 641 00:32:28,609 --> 00:32:30,309 Quiero acceder a otro método 642 00:32:30,309 --> 00:32:32,970 Tendré que llamarlo sobre este objeto 643 00:32:32,970 --> 00:32:36,490 Para hacerlo, uso el dis 644 00:32:36,490 --> 00:32:44,710 Luego en realidad 645 00:32:44,710 --> 00:32:46,710 Dentro del mismo objeto 646 00:32:46,710 --> 00:32:48,089 Se puede no usar el dis, pero 647 00:32:48,089 --> 00:32:49,130 Es más claro 648 00:32:49,130 --> 00:32:53,390 Veremos en futuro 649 00:32:53,390 --> 00:32:55,609 Vendrán momentos en que el dis 650 00:32:55,609 --> 00:32:57,170 Queda claro 651 00:32:57,170 --> 00:32:59,289 Entonces la última cosa 652 00:32:59,289 --> 00:33:05,470 y que nos queda para ver es el concepto del método estático vale ahora hemos entendido los 653 00:33:05,470 --> 00:33:11,509 métodos para objetos los métodos estáticos son esos objetos que si llamados sobre objetos 654 00:33:11,509 --> 00:33:22,329 distintos proporcionen la misma el mismo resultado o sea que no cambia el resultado si lo llevamos a