1 00:00:00,750 --> 00:00:07,349 Voy a grabar esta clase, por lo tanto, si habláis, me dais vuestro consentimiento a que sea grabada vuestra voz. 2 00:00:07,610 --> 00:00:13,330 Vale. Entonces, ayer estuvimos viendo los primeros conceptos de herencia. 3 00:00:16,410 --> 00:00:19,670 Vamos hoy a seguir con conceptos un poquito más avanzados. 4 00:00:21,190 --> 00:00:27,449 Ya lo hemos dicho ahora en el repaso, pero, sustancialmente, si habéis entendido el concepto de herencia, 5 00:00:27,449 --> 00:00:31,550 que una clase hereda de otra, etcétera, etcétera, el concepto de árbol que hemos hablado antes, 6 00:00:31,910 --> 00:00:36,609 habréis entendido que al final, nosotros cuando usábamos las herencias, 7 00:00:36,850 --> 00:00:42,469 creamos una jerarquía, creamos una jerarquía de clases relacionadas entre ellas, 8 00:00:42,950 --> 00:00:47,450 de que una subclase es una superclase, que es una supersuperclase, 9 00:00:47,609 --> 00:00:54,090 y así, así, así, subiendo en esta jerarquía, en este árbol de clases que heredan una de otra, ¿vale? 10 00:00:54,090 --> 00:01:00,570 Entonces, en Java todas las clases heredan siempre desde la clase Object 11 00:01:00,570 --> 00:01:07,370 Entonces, aquí tenemos un ejemplo, por ejemplo, de una jerarquía de clases en Java 12 00:01:07,370 --> 00:01:11,510 La clase que está por arriba, la clase raíz, es la clase Object 13 00:01:11,510 --> 00:01:14,829 Que está ya definida en el núcleo, digamos, de Java 14 00:01:14,829 --> 00:01:21,930 Cuando yo me instalo el JREK o si tengo el JRE con todas las clases básicas que se puedan ejecutar 15 00:01:21,930 --> 00:01:24,349 Pues ahí dentro ya está definido object 16 00:01:24,349 --> 00:01:25,790 Cómo está definido string 17 00:01:25,790 --> 00:01:27,329 Cómo está definido scanner 18 00:01:27,329 --> 00:01:29,010 Cómo están definidas otras clases 19 00:01:29,010 --> 00:01:30,730 Que nosotros hemos usado random 20 00:01:30,730 --> 00:01:33,069 Y cosas por el estilo 21 00:01:33,069 --> 00:01:36,269 Todas las clases 22 00:01:36,269 --> 00:01:38,189 Desde object 23 00:01:38,189 --> 00:01:40,590 Tiene todas las clases que existen 24 00:01:40,590 --> 00:01:41,969 Todas las clases cuando nosotros buscamos 25 00:01:41,969 --> 00:01:42,629 Ahí en el API 26 00:01:42,629 --> 00:01:44,709 Vemos algunos ejemplos de API 27 00:01:44,709 --> 00:01:46,650 Pues todas esas heredan siempre de object 28 00:01:46,650 --> 00:01:48,650 O heredan de otra clase 29 00:01:48,650 --> 00:01:50,469 Que luego antes o después 30 00:01:50,469 --> 00:01:51,590 Hereda de object 31 00:01:51,590 --> 00:02:06,870 Por ejemplo, todos los tipos primitivos que nosotros tenemos, int, boolean, float y cosas por el estilo, tienen una clase que representa un objeto que representa ese número. 32 00:02:07,450 --> 00:02:11,629 O sea, nosotros sabemos que el int3 no es un objeto, es un tipo primitivo. 33 00:02:11,629 --> 00:02:30,569 Pero Java te permite representar ese valor 3 como un objeto, utilizando por ejemplo la clase integer. Existe una clase integer que como constructor pilla un integer, entonces le puedo pasar el valor 3, que es un objeto que representa el número 3. 34 00:02:30,569 --> 00:02:35,870 Todos los tipos, esto aquí, integer, long, float, double 35 00:02:35,870 --> 00:02:37,210 Que tienen una clase propias 36 00:02:37,210 --> 00:02:40,009 Heredan desde una clase number 37 00:02:40,009 --> 00:02:44,370 Que tendrá las características propias de todos los números 38 00:02:44,370 --> 00:02:48,169 Y number hereda desde object 39 00:02:48,169 --> 00:02:51,689 Entonces tengo boolean que deriva de object 40 00:02:51,689 --> 00:02:54,870 Character que también es hijo de object 41 00:02:54,870 --> 00:02:57,750 Y luego aquí tengo, por ejemplo, mi propia construcción 42 00:02:57,750 --> 00:03:05,610 Cuando he hecho el objeto persona, esta persona derivaba de object, y cuando he hecho alumno, alumno hereda de persona que hereda de object. 43 00:03:12,300 --> 00:03:13,780 No, de un int no. 44 00:03:14,319 --> 00:03:19,919 Si tú pillas un integer, integer x es igual a new integer de 3. 45 00:03:21,000 --> 00:03:23,780 Y ahora le dices, ¿x es una instancia de integer? Sí. 46 00:03:24,800 --> 00:03:32,020 Ahora, es un poquito más complejo eso, porque Java hace cosas raras como lo hace con string. 47 00:03:32,020 --> 00:03:34,259 Con integer e int 48 00:03:34,259 --> 00:03:36,500 Donde tú puedes usar un int 49 00:03:36,500 --> 00:03:37,919 Puedes poner un integer 50 00:03:37,919 --> 00:03:40,639 Y él en automático hace lo que sea 51 00:03:40,639 --> 00:03:42,780 Para transformarte este integer en un int 52 00:03:42,780 --> 00:03:46,139 Es un int 53 00:03:46,139 --> 00:03:47,860 Pero como objeto 54 00:03:47,860 --> 00:03:50,659 Mientras int es un tipo primitivo 55 00:03:50,659 --> 00:03:52,879 Integer es una clase 56 00:03:52,879 --> 00:03:53,939 Que representa 57 00:03:53,939 --> 00:03:55,879 Un tipo int 58 00:03:55,879 --> 00:03:57,460 Pero como objeto 59 00:03:57,460 --> 00:03:58,479 No como 60 00:03:58,479 --> 00:04:01,639 ¿Os acordáis que nosotros vimos 61 00:04:01,639 --> 00:04:03,479 Integer.partseint 62 00:04:03,479 --> 00:04:06,139 ¿Pues qué es ese integer? 63 00:04:07,659 --> 00:04:08,639 Pues la clase integer 64 00:04:08,639 --> 00:04:09,460 ¿Vale? 65 00:04:09,659 --> 00:04:12,139 La ventaja que tengo es que int es un tipo primitivo 66 00:04:12,139 --> 00:04:13,860 Es un 3, no puedo hacer nada más con eso 67 00:04:13,860 --> 00:04:16,800 La clase integer es una clase 68 00:04:16,800 --> 00:04:20,300 Y además de representarme un valor numérico 69 00:04:20,300 --> 00:04:21,660 Un valor numérico entero 70 00:04:21,660 --> 00:04:26,079 Pues le puedo poner métodos estáticos o no 71 00:04:26,079 --> 00:04:28,319 Que puedan manipular esos objetos 72 00:04:28,319 --> 00:04:31,660 Por ejemplo, la clase integer define un método partsInt 73 00:04:31,660 --> 00:04:34,160 Que me permite pillar un string 74 00:04:34,160 --> 00:04:36,259 Y transformarlo en entero 75 00:04:36,259 --> 00:04:37,899 Yo pillo el string 76 00:04:37,899 --> 00:04:39,899 Comillas, tres comillas 77 00:04:39,899 --> 00:04:42,980 Y lo transformo en el valor numérico tres 78 00:04:42,980 --> 00:04:44,500 Para luego poder operar 79 00:04:44,500 --> 00:04:45,819 Con él matemáticamente 80 00:04:45,819 --> 00:04:48,500 Lo hemos usado en un par de ejercicios 81 00:04:48,500 --> 00:04:50,480 ¿Os acordáis? 82 00:04:51,120 --> 00:04:52,079 Pues como eso 83 00:04:52,079 --> 00:04:53,779 Estará double y cosas por el estilo 84 00:04:53,779 --> 00:04:56,399 Si vosotros os vais a 85 00:04:56,399 --> 00:04:57,379 Vuestro mejor amigo 86 00:04:57,379 --> 00:04:59,399 El Java API 87 00:04:59,399 --> 00:05:01,160 Integer por ejemplo 88 00:05:01,160 --> 00:05:04,019 veis la clase integer 89 00:05:04,019 --> 00:05:06,439 y podéis ver que la clase integer 90 00:05:06,439 --> 00:05:07,860 lo que es, es 91 00:05:07,860 --> 00:05:11,689 wraps 92 00:05:11,689 --> 00:05:15,470 envolve 93 00:05:15,470 --> 00:05:16,970 envuelve, vale 94 00:05:16,970 --> 00:05:19,009 un tipo primitivo int en un 95 00:05:19,009 --> 00:05:21,050 object, sustancialmente es como 96 00:05:21,050 --> 00:05:23,389 si fuera una clase 97 00:05:23,389 --> 00:05:24,870 donde yo digo public class 98 00:05:24,870 --> 00:05:26,810 mi entero o entero 99 00:05:26,810 --> 00:05:28,970 y luego le pongo que tiene un int x 100 00:05:28,970 --> 00:05:30,910 allí dentro, entonces sustancialmente 101 00:05:30,910 --> 00:05:32,910 estoy creando un objeto que dentro tiene un entero 102 00:05:32,910 --> 00:05:34,110 Ese es un integer 103 00:05:34,110 --> 00:05:34,810 ¿Vale? 104 00:05:35,389 --> 00:05:36,970 La cosa interesante de esto 105 00:05:36,970 --> 00:05:37,810 Es que luego 106 00:05:37,810 --> 00:05:39,149 Tengo constructores 107 00:05:39,149 --> 00:05:40,470 ¿Veis que puedo? 108 00:05:40,709 --> 00:05:41,430 No, no, no 109 00:05:41,430 --> 00:05:46,639 No sé si ahora 110 00:05:46,639 --> 00:05:47,579 Se me ha blocado el 111 00:05:47,579 --> 00:05:48,519 El vídeo 112 00:05:48,519 --> 00:05:51,980 Bueno