Cancerología == oncología
Entender la Programación orientada a objetos
Programación orientada a objetos en Java
¿Qué es un Objeto?
Abstracción: ¿Qué es una Clase?
Modularidad
Definir Clases y sus componentes
Creando nuestra primera Clase
Método constructor
Static: Variables y Métodos Estáticos
Creando elementos estáticos
Final: Variables Constantes
Sobrecarga de métodos y constructores
¡Reto!
Encapsulamiento: Modificadores de acceso
Getters y Setters
Variable vs. Objeto
Variable vs. Objeto: Un vistazo a la memoria
Clases Anidadas
Clases Internas y Locales a un método
Enumerations
Reutilizar Código
¿Qué es la Herencia? Don't repeat Yourself
Super y This
Polimorfismo: Sobreescritura de Métodos
Polimorfismo: Sobreescribiendo el método toString
Interfaces
Creando una interfaz para definir si una fecha es agendable
Collections
Aplicar Abstracción
Clases Abstractas
Miembros abstractos
Clases Anónimas
Diferencias entre las Interfaces y las Clases Abstractas
Interfaces en Java 8 y 9
Herencia en interfaces
Ensamblando Objetos el proyecto
Simulando autenticación de usuarios
Modularizando la UI de Doctores
Definiendo las citas disponibles
Modularizando la UI de Pacientes
Recorriendo estructuras de árbol en Java
Agendando Citas
Cierre del curso: Continúa con Programación Funcional en Java
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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.
Aportes 46
Preguntas 13
Cancerología == oncología
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
Métodos Abstractos: es obligatorio de implementación
Cual es la diferencia entre
Doctor doctor = new Doctor();
y
User user = new Doctor();
se torna interesante el proyecto
No podría quedarme mas claro la programación orientada a objetos con tremenda profesora
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
Las clases abstractas se apropian de la herencia, yo podria tener una clase hija que al mismo tiempo este heredando a otra clase por lo tanto esta clase va a tener una nueva clase hija, y esta nueva clase hija tambien puede ser abstracta.
No se puede instanciar la clase abstracta pero si las clases hijas
📰 Los métodos abstractos solo se pueden implementar en clases abstractas.
Los métodos abstractos son obligatorios declararlos en las clases hijas, las clases hijas son las que definirán el comportamiento del método abstracto.
Estupenda clase, ahora sabemos que para establecer restricciones en una clase abstracta podemos hacer los métodos abstractos, de esta forma es obligatorio implementarlos en las clases que la usen. Además, también descubrimos que podemos hacer clases abstractas a partir de otras clases abstractas como es el ejemplo de la clase triangulo.
Excelente explicación
Gracias, excelente contenido 😃
en intelliJ IDEA se puede correr el programa con Ctrl + Shift + F10
¿Si Userr es abstracto ya no son necesarios los gettes and setters?
Instanciar de user es correcto? o lo correcto seria instanciar de su clase correspondiente?
se pone interesante la cosa
Cuando un método es Abstracto obligatoriamente la clase es abstracta
Genial!! Se va poniendo mas interesante!
:0
Me gusto mucho la clase 😃
Creo yo que lo correcto o al menos para que fuera mas fácil de implementarlo, es no dejar las salidas de texto hardcodeadas, sino que tomaran esos datos como atributos de la misma clase
entendido 😃 gracias
Quedo claro
De acuerdo a las reglas de negocios, Las clases abstractas sin métodos abstractos. Lo único que nos van a resolver es la posibilidad de nunca más estar instanciando objetos de las clases padres. Las Clases abstractas por defecto siempre serán clases padres y no podremos instanciar objetos de ella; pero si de sus hijos.
Cual es el atajo de teclado para comentar varias lineas en intellij no me da el Ctrl + /
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.
Esto es muy útil cuando hay inyección de dependencias y no se quiere usar una declaración de una clase específica, si no de una clase abstracta más genérica.
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. ❤️
Porque crear un objeto user y no un objeto doctor? no seria lo mismo?
osea que los métodos de las interfaces son abstractos
¿Si la clase user es abstracta, de que me sirve colocar un metodo que no es abstracto si no puedo llamarlo. ya que no puedo crear instancias de la clase user?
en las interfaces todos son obligatorios.
y en las clases abstractas solo las funciones abstractas son obligatorias.
Para quienes decidan investigar más, este tipo de polimorfismo se llama; polimorfimos de subtipos
Miembros abstractos
Las clases abstractas sin métodos abstractos lo único que van a resolver, de acuerdo a las reglas del negocio, es no tener objetos o instancias creados a partir de esa clase.
Las clases abstractas siempre serán clases padre y de estas nunca se podrán crear objetos.
public abstract class Figura{
abstract void dibujate();
}
class Triangulo extends Figura{
void dibujate(){
// Dibujar triangulo
}
}
Este método abstracto deberá ser implementado en todas las clases que hereden de la clase Figura. Los métodos que no sean abstractos serán opcionales de implementar o sobrescribir.
También es posible tener una clase hija que al mismo tiempo herede a otra clase, y esta clase puede ser a su vez una clase abstracta con métodos abstractos, por ejemplo:
abstract class Triangulo extends Figura{
abstract void dibujate();
}
Es posible que la clase Triangulo, que hereda de Figura, sea también una clase abstracta y deje abstracto también el método dibújate para que sea implementado por las clases que van a heredar de Triangulo. Por ejemplo:
class TrianguloIsosceles extends Triangulo{
void dibujate(){
// Dibujar triangulo isosceles
}
}
Recuerda los métodos abstractos solo se pueden implementar en clases abstractas. Y las clases abstractas no necesitan ser instanciadas para ser implementadas.
Notas de la Clase:
Miembros abstractos
Definir un método abstracto:
public abstract class Figurar {
... abstract void dibujate(); // Convierte al método en obligatorio
}
Los métodos abstractos son obligatorios, a diferencia de los demás métodos que tenga una Clase abstracta y que no estén declarados con la palabra reservada abstract
los cuales serán opcionales.
Se pueden tener Clases abstractas que tengan subclases que a su vez tengan métodos abstractos:
// Superclase
public abstract class Figura {
// Implementación
}
// Subclase
abstract class Triangulo extends Figura {
abstract void dibujate();
// Para tener un método abstracto la clase también debe ser abstracta
}
// Clase hija de la subclase anterior
class TrianguloIsosceles extends Triangulo {
void dibujate() {
// Dibujar triángulo isosceles
}
}
Ejemplo de Polimorfismo en las Clases abstractas
// Superclase
public abstract class User {
public abstract void showDataUser();
}
// Main.java
User user = new Doctor("Anahí", "anahí@santaclara.health");
user.showDataUser();
A pesar de que User
es una Clase abstracta por lo que no puede ser instanciada, gracias al polimorfismo “puede tomar la forma” de la clase Doctor
, pudiendo convertirse en una instancia de dicha Clase.
jajaj ¿soy el único que no entiende nada de la teoría, pero que cuando empieza con la parte del código le entiende al instante? xD
Entonces los métodos abstractos. los empleamos cuando en nuestro análisis vemos que tenemos un método común pero con comportamiento totalmente diferente ?
Metodos abstractos => metodos obligatorios.
Los métodos abstractos nos reflejan que necesitamos que cada clase cumpla con ciertos métodos obligatorios.
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.