Kevin Ariel Merino Peña
Cancerología == oncología
Martín Correa
jajajajjjaa
Gonzalo Cofré
Nutriología == Nutrición
Los Métodos Abstractos son los métodos que debemos implementar obligatoriamente cada vez que usemos nuestras clases abstractas, mientras que los métodos que no sean abstractos van a ser opcionales.
public abstract class Figura { abstract void dibujar(); // obligatorio void dibujar3D(); // no es obligatorio } class Triangulo extends Figura { void dibujar() { // Instrucciones para dibujar el triángulo... } }
Recuerda los métodos abstractos solo se pueden implementar en clases abstractas. Y las clases abstractas no necesitan ser instanciadas para ser implementadas.
Kevin Ariel Merino Peña
Cancerología == oncología
Martín Correa
jajajajjjaa
Gonzalo Cofré
Nutriología == Nutrición
Byron Peña Villarreal
La diferencia entre una clase abstracta y una interface, es que al crear un método abstracto en la clase abstracta (super_clase), se obliga heredar este método a las clases hijas (sub_clases), en cambio al implementar una interface en una clase ya sea abstracta o concreta, debemos implementar TODOS los métodos que tenga dicha interface
Brian Sánchez Izquierdo
Justo me estaba preguntando está diferencia, muchas gracias.
Leonardo Fabio Mercado Benítez
NO se obliga a heredar(esto se hace po defecto), se obliga a sobreescribir los métodos abstractos de la superclase
Francisco Javier Jesus Cisneros Huamani
Métodos Abstractos: es obligatorio de implementación
Wilson Marino Pablo Mendez
Exacto 👍
Usuario anónimo
UserSon obligatorios.
Johann Eduardo Rangel
Cual es la diferencia entre
Doctor doctor = new Doctor();
y
User user = new Doctor();
Johann Eduardo Rangel
Que diferencia hay? que efecto tendria instanciarlo de la clase Doctor y no de User
Maria Gabriela Rodriguez
Bueno, primero debes recordar que User no se puede instanciar por ser una clase abstracta. Luego, en este ejemplo de la clase, explica más el beneficio de los métodos opcionales o no, pero de un caso como el que dices.. Te sirve para generalizar ciertos comportamientos. Si, por ejemplo, tuvieras un metodo que reciba como parametro un Doctor, o un Nurse o un Patient. En vez de hacer polimorfismo del metodo para cada clase, escribirías solo un método que reciba un parámetro de tipo User y así podria recibir un objeto Doctor, Nurse o Patient.
En el ejemplo especifico que pones, no hay diferencia, al final ambos son de tipo Doctor, que a su vez significa que son de tipo User. Solo que en un caso usas la subclase y en el otro la super-clase
Christian Gómez
Katherine Benjumea
En resumen, las clases abstractas son útiles cuando quieres definir un comportamiento común para varias clases relacionadas, pero no quieres crear una clase concreta para ese comportamiento.
Jhoan Sebastián Lopera Gallego
De hecho según lo que mencionas, si estarías creando una clase, la abstracta
Sabrina Poggi
Clase Abstracta = *No se pueden generar instancias *Tiene métodos abstractos que son obligatorios de sobrescribir. *Tiene métodos no abstracto que no son obligatorios de sobrescribir
Interface = *Tiene métodos que son obligatorios de sobrescribir
Jhoan Sebastián Lopera Gallego
Gracias, muy valioso el resumen
Gabriela Barrezueta
Entonces en que casos puedo aplicar una interface??
Massimo Di Berardino
Hola @Gbarrezueta, normalmente las interface se utilizan cuando quieres que una clase tenga unos atributos o métodos especifico y sea aplicado en la misma obligatoriamente
Stiven Trujillo
Lo que entendí:
Las Clases abstractas, son como clases normales (puedes hacer todo lo de una clase normal, como Heredar de ella, definir atributos y métodos.) pero con habilidades de Interfaces (como definir comportamientos únicamente).
Pero entonces, si esto es cierto. puedo emular lo que hace una Interface, con una clase abstracta no? xD
Daniel Alejandro Romero Navarro
Le pregunte esto a chat gpt, Esta en lo correcto: Si por ejemplo en le paradiggma de programacion orietado a objetos con el leguaje de programación Java yo tengon una clase padre y la implemeto multiples interfaces los metodos de las intefaces se herdaran a la clase hija? Respondio: En Java, una clase puede implementar múltiples interfaces, lo que significa que puede declarar que implementa varias interfaces y proporcionar la implementación de los métodos definidos en esas interfaces. Sin embargo, las interfaces en Java no se heredan como las clases padre.
Cuando una clase implementa una interfaz en Java, está obligada a proporcionar una implementación para todos los métodos definidos en esa interfaz. Estos métodos implementados se vuelven parte de la clase que los implementa y están disponibles para ser invocados en instancias de esa clase. Sin embargo, la implementación de una interfaz en una clase no afecta a la herencia de clases padre.
Esto significa que los métodos de una interfaz implementada en una clase no se heredarán automáticamente a las clases hijas de esa clase. Si una clase hija desea utilizar la implementación de una interfaz proporcionada por su clase padre, debe implementar esa interfaz nuevamente en la clase hija y proporcionar su propia implementación de los métodos definidos en esa interfaz.
R. CHIMAYCO FARFAN
Mary Ahilyn Mamani Mamani
Una pregunta, se puede sobreescribir metodos abstractos?
Oscar Gutiérrez
Si, como tal como ya no le pones comportamiento al método abstracto necesitas sobre-escribirlo para que la clase hija sea la que lo implemente.
Andrés Serafin Rene Jerez Camargo
¿Una clase puede componerse de varias clases abstractas como en el caso de interfaces, o solo puede tener un padre como en la herencia?
Manuel Tapia
En cada clase sólo puede extender una clase padre, por el contrario, cómo comentas, puedes implementar cuantas Interfaces quieras
Dewin Fabián Acosta Jiménez
Hay algo que no me queda claro con las clases abstractas, en la clase User ya se definió como abstracta sino que al final de esa clase abstracta aparece como una especie función ¿A qué se refiere con eso?
Jaime Yañez Orosco
Hola, lo que aparece al final de la clase es un método abstracto el cual se caracteriza por no tener cuerpo, es decir, no tiene código dentro. Este nos sirve cuando cada clase hija lo implementara de manera distinta, entonces no tiene caso escribir codigo dentro de un metodo el cual sera cambiado por completo en cada clase hija, nos sirve mas que nada como anotaciones de los metodos que heredamos pero que adaptaremos al comportamiento de cada clase
a diferecia de los metodos no abstractos que el codigo de estos s i nos servira para todas las clases como es el ejemplo del metodo ToString.
Camilo Ramirez Castillo
Hola comunidad, ¿La diferencia entre implementar una interfaz y heredar una clase abstracta, es que la clase abstracta posee métodos opcionales que no son necesarios declararlos?
Amaru Gabriel Durán
Así es, aunque otra diferencia interesante es que, en las clases abstractas, podés declarar atributos, mientras que en las interfaces sólo podés declarar constantes y firmas de los métodos.
Otra ventaja de las clases abstactas por sobre herencia por ejemplo, es que en herencia estás "atado" a todas las firmas de los métodos que fueron declarados en la clase padre, mientras que en clases abstactas sólo tendrás que redefinir los métodos que hayas considerado como abstactos en tu modelo de negocio.
Jose Angel Maya Quevedo
Woow, hace bastante tiempo me aleje de la programación precisamente por que las clases abstractas me volaron la cabeza. Ahora quiero agradecer a Anahí por que en solo 12 minutos me explico lo que en 1 semestre no pudieron. <3
Reinaldo Mendoza
Es una tema complejo
Carlos Eduardo Repillosa Del Valle
Los metodos abstractos pueden tener una implementacion por defecto?, que en dado caso de ser necesario pueda ser sobrescrito en otra clase, digo porque veo que con las clases abstractas puediera definir comportamientos habituales del proyecto y si es necesario cambiarlo para una clase en particular, lo malo es que me limita las clases que puedo heredar que en ese caso serian mejor las interfaces.
Robinson Matias Aguilar Bascuñan
¿Si Userr es abstracto ya no son necesarios los gettes and setters?