No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Miembros abstractos

27/38
Recursos

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

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

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

  • Si heredo de una clase abstracta y esa clase tiene métodos abstractos obligatoriamente debo invocar esos metodos en la clase que esta heredando de la abstracta.

  • Ahora, una clase abstracta puede tener subclases y estas subclases también pueden ser abstractas.

  • Si tenemos un método abstracto, obligatoriamente su clase debemos colocarla como abstracta.

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?

<h4>Excelente clase!</h4>

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.


<h4>Métodos abstractos</h4>
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.