Súper explicación, pero tengo una duda: ¿cuando haces una sobrecarga de métodos no se usa el @Override? ¿O en qué casos se usa el @Override? ¡Muchas gracias!
¡GRACIAS! El @Override aparece al SOBRESCRIBIR métodos (sobrecarga es otra cosa). Es opcional pero altamente recomendable ponerlo. El porqué lo tenés en este video: ua-cam.com/video/14Bo_fNtLZY/v-deo.html
Muy bueno Charly! Solo unas consultas. Por qué lo estarías sobrescribiendo al método? Si es una clase que creaste desde 0? está implícito de antemano? que función cumple?
Ante todo, hay que entender herencia: toda clase en Java hereda de la clase Object, si o sí. Cómo la implementación del toString de Object retorna un String con la referencia del objeto, se sobreescribe tal método para lograr devolver un String que represente el estado. En el vídeo "toString es polimorfismo" lo explico con más detalle. Saludos
@@CharlyCimino Ahí entendí, o sea el método heredado lo que hace es devolverte la ubicación en memoria que te arrojaba al principio, vos lo sobrescribiste para que se comporte a tu gusto. Gracias! Lo estás dejando muy bueno al canal!
@@mentorbook3265 exactamente, ese es el efecto de sobreescribir un método. Cuando aparezcan los videos de polimorfismo verás que es el pilar fundamental de la POO: ¡estoy pudiendo cambiar el comportamiento del println de Java para mis clases sin tocar el println de Java!
Oye si por ejemplo tengo una clase persona que hereda a estudiante y a alumno, en donde ambos se le agregan otros parametros, como le puedo hacer para que al imprimir su ubicación me aparezca toda su información? no solo el de la clase persona
Sobrescribiendo el método toString llamando al toString de la superclase y agregando lo de la subclase. Chequea mí video de super y polimorfismo en Java.
@@CharlyCimino ya lo hice y si me ayudo pero para abstraer la informacion de la super clase tuve que cambiar los modificadores de acceso de private a protected para poder mostrar la información
@@juanperez-rq2lb no deberías, los atributos protected quedan expuestos casi como si fueran public (mirá mí video de protected e Java). En el toString de la subclase colocá "super.toString()" para invocar al toString de la superclase y ya.
Hola Carly, tengo un toString en una superclase (A). Cuando leo desde otra clase (X) y le pido el toString, me devuelve los datos de la superclase (A) y la subclase (B) heredada. ¿Cómo puedo evitarlo? Solo quiero los datos de la superclase (A).
Charly, siempre con dudas yo ! Todavía estoy chato. Creo que lo que "antes" era el tipo de dato de una variable, ahora es una clase, no? O mejor dicho, tiene su clase?. Con String es evidente porque se escribe con mayúscula. Ahora, cuando uno se encuentra con algo como int numero = 20; no hay una clase, sería una asignación, pero int tiene clase?. Y por último, ArrayList y Arrays son dos clases distintas? Para poder imprimir un array común, al método toString lo vi en internet con Arrays, se podría haber usado ArrayList?. Espero no haberte mareado y espero también tener una mirada más global pronto :(
1) Todos son tipos de datos. La diferencia es que hay 8 tipos de datos llamados primitivos (int, double, char, boolean, y otros 4) que no son clases, el resto sí lo son (por ejemplo, String). 2) 'int x = 20' es una asignación tal como lo es 'Scanner x = new Scanner(...)', lo que importa es la coherencia: si tu variable es de tipo int, asignas un int. Si tu variable es de tipo Scanner, asignas una referencia a un Scanner (o null) 3) ArrayList es la clase que modela a las listas de elementos. Arrays es una clase utilitaria con métodos estáticos (ya verás qué es el 'static') para hacer cosas con los arrays primitivos (los que son con corchetes, no ArrayList) 4) ArrayList tiene su propio método toString sobrescrito, por eso podes mostrar cualquiera de ellos directamente en la consola, no así con los arrays, que no poseen métodos propios y por eso se apoyan en una clase utilitaria (Arrays) 5) Java suele tener muchas cosas heredadas de sus antecesores (C/C++), como los arrays con corchetes y los tipos de datos primitivos, por eso no se lo considera 100% orientado a objetos
@@CharlyCimino de tantos videos que vi, no recuerdo donde es que decís que Java hereda o trae los elementos primitivos de otro programa que sería algo así como el "padre", podrías decirme el nombre por escrito? A propósito de todo esto, estuve leyendo sobre los Wrapper, muy interesante!
@@pabloschlo Java es un lenguaje basado en su antecesor C++, que a su vez está basado en el lenguaje C. Este último es el padre de todos prácticamente.
🙌 ¡APOYÁ AL CANAL! Si te gusta mi contenido, invitame un cafecito 😁
➡ Desde Argentina: cafecito.app/charlycimino
➡ Fuera de Argentina: paypal.me/charlycimino
📌 Dejá tu comentario 📝, dale 'like' 👍, suscribite al canal 👥 y activá la campanita 🔔 ¡GRACIAS!
🤳 ¡Seguime!
🌏WEB PERSONAL: charlycimino.com 🌏
🌎INSTAGRAM: instagram.com/charlycimino 🌏
🌍FACEBOOK: facebook.com/charlyycimino 🌏
🌏LINKEDIN: linkedin.com/in/charlycimino 🌏
🌏GITHUB: github.com/CharlyCimino 🌏
🌏TWITCH: www.twitch.tv/charlycimino 🌏
🌏PATREON: patreon.com/charlycimino 🌏
sos un crack!!! de los mejores cursos que vi en internet.
Es increíblemente fascinante todo el conocimiento que compartes!!
Amigo vos explicas de una forma muy clara
La mejor explicación, muchas gracias!
Excelente video, lo entendí al instante.
Maniito QUE BIEEEN QUE SE TE ENTIENDE!!!! te voy a recomendar cada vez q alguien tenga dudas de Java :)
Excelente y clarísima tu explicación. ¡Muchas gracias!
eres un crack hermano, he entendido todo perfectamente
Otra vez más me has ayudado a aclarar conceptos, un saludo !!
Buen video hermano, fácil, rápido y entendible
gracias loco, que nivel! me ayudaste mucho
Excelente explicación, muchas gracias y adelante con el canal!
Diez puntos. Muchas gracias.
Qué buena explicación.
Sos un genio, muchas gracias
Excelente canal. Todo clarisimo
gracias crack
Súper explicación, pero tengo una duda: ¿cuando haces una sobrecarga de métodos no se usa el @Override? ¿O en qué casos se usa el @Override? ¡Muchas gracias!
¡GRACIAS! El @Override aparece al SOBRESCRIBIR métodos (sobrecarga es otra cosa). Es opcional pero altamente recomendable ponerlo. El porqué lo tenés en este video: ua-cam.com/video/14Bo_fNtLZY/v-deo.html
Bendito seas ya entendi! jajaja
Muy bueno Charly! Solo unas consultas. Por qué lo estarías sobrescribiendo al método? Si es una clase que creaste desde 0? está implícito de antemano? que función cumple?
Ante todo, hay que entender herencia: toda clase en Java hereda de la clase Object, si o sí. Cómo la implementación del toString de Object retorna un String con la referencia del objeto, se sobreescribe tal método para lograr devolver un String que represente el estado. En el vídeo "toString es polimorfismo" lo explico con más detalle. Saludos
@@CharlyCimino Ahí entendí, o sea el método heredado lo que hace es devolverte la ubicación en memoria que te arrojaba al principio, vos lo sobrescribiste para que se comporte a tu gusto. Gracias! Lo estás dejando muy bueno al canal!
@@mentorbook3265 exactamente, ese es el efecto de sobreescribir un método. Cuando aparezcan los videos de polimorfismo verás que es el pilar fundamental de la POO: ¡estoy pudiendo cambiar el comportamiento del println de Java para mis clases sin tocar el println de Java!
Pregunta: la anotación de @override, ¿Es un comentario o es código para que el método sobrecargado pueda funcionar?
Te recomiendo ver mí video específico acerca del "@override"
Oye si por ejemplo tengo una clase persona que hereda a estudiante y a alumno, en donde ambos se le agregan otros parametros, como le puedo hacer para que al imprimir su ubicación me aparezca toda su información? no solo el de la clase persona
Sobrescribiendo el método toString llamando al toString de la superclase y agregando lo de la subclase. Chequea mí video de super y polimorfismo en Java.
@@CharlyCimino ya lo hice y si me ayudo pero para abstraer la informacion de la super clase tuve que cambiar los modificadores de acceso de private a protected para poder mostrar la información
@@juanperez-rq2lb no deberías, los atributos protected quedan expuestos casi como si fueran public (mirá mí video de protected e Java). En el toString de la subclase colocá "super.toString()" para invocar al toString de la superclase y ya.
Hola Carly, tengo un toString en una superclase (A). Cuando leo desde otra clase (X) y le pido el toString, me devuelve los datos de la superclase (A) y la subclase (B) heredada. ¿Cómo puedo evitarlo? Solo quiero los datos de la superclase (A).
Revisá el toString de la subclase B: debe estar llamando al toString de la superclase (super.toString()). Quitá ese llamado y ya
Y si solo querés los datos de la superclase A, entonces no sobrescribas el toString en la subclase B
Charly, siempre con dudas yo ! Todavía estoy chato. Creo que lo que "antes" era el tipo de dato de una variable, ahora es una clase, no? O mejor dicho, tiene su clase?. Con String es evidente porque se escribe con mayúscula. Ahora, cuando uno se encuentra con algo como int numero = 20; no hay una clase, sería una asignación, pero int tiene clase?. Y por último, ArrayList y Arrays son dos clases distintas? Para poder imprimir un array común, al método toString lo vi en internet con Arrays, se podría haber usado ArrayList?. Espero no haberte mareado y espero también tener una mirada más global pronto :(
1) Todos son tipos de datos. La diferencia es que hay 8 tipos de datos llamados primitivos (int, double, char, boolean, y otros 4) que no son clases, el resto sí lo son (por ejemplo, String).
2) 'int x = 20' es una asignación tal como lo es 'Scanner x = new Scanner(...)', lo que importa es la coherencia: si tu variable es de tipo int, asignas un int. Si tu variable es de tipo Scanner, asignas una referencia a un Scanner (o null)
3) ArrayList es la clase que modela a las listas de elementos. Arrays es una clase utilitaria con métodos estáticos (ya verás qué es el 'static') para hacer cosas con los arrays primitivos (los que son con corchetes, no ArrayList)
4) ArrayList tiene su propio método toString sobrescrito, por eso podes mostrar cualquiera de ellos directamente en la consola, no así con los arrays, que no poseen métodos propios y por eso se apoyan en una clase utilitaria (Arrays)
5) Java suele tener muchas cosas heredadas de sus antecesores (C/C++), como los arrays con corchetes y los tipos de datos primitivos, por eso no se lo considera 100% orientado a objetos
@@CharlyCimino Gracias !!!💯
@@CharlyCimino array común = array primitivo jaja, vos entendes 😆
@@CharlyCimino de tantos videos que vi, no recuerdo donde es que decís que Java hereda o trae los elementos primitivos de otro programa que sería algo así como el "padre", podrías decirme el nombre por escrito? A propósito de todo esto, estuve leyendo sobre los Wrapper, muy interesante!
@@pabloschlo Java es un lenguaje basado en su antecesor C++, que a su vez está basado en el lenguaje C. Este último es el padre de todos prácticamente.