sirven - programa en java con clase abstracta




¿Por qué necesitamos clases abstractas en Java? (2)

¿Por qué necesitamos clases abstractas en Java? Si nunca vas a convertirlo en un objeto, ¿por qué tenerlo en primer lugar? ¿Como lo usas? ¿Por qué está ahí? Me pregunto lo mismo con los métodos abstractos. Me parece que es un concepto similar a tener una súper clase sin subclases que podría ser importante.


Existen muchos usos de las clases abstractas, el propósito principal de las clases abstractas es funcionar como clases base que pueden extenderse por subclases para crear una implementación completa.

Por ejemplo,

Puede tener tres pasos para ser implementado en su programa,

  • Pocos pasos antes de la acción.
  • Alguna acción a realizar.
  • Pocos pasos después de la acción.

Entonces, en este caso, puede definir una clase abstracta con los tres métodos como este:

public abstract MyAbstractProcess {
    public void stepBefore() {
        //implementation directly in abstract superclass
    }

    public abstract void action(); // implemented by subclasses

    public void stepAfter() {
        //implementation directly in abstract superclass
    }
}

Además, el ejemplo anterior de la clase abstracta Animal es también un muy buen ejemplo.


Las clases abstractas permiten proporcionar un conjunto parcial de implementaciones predeterminadas de métodos en una clase. Ya que están incompletos, no se pueden crear instancias y usarlos tal como están, pero se pueden clasificar en subclases para agregar los detalles faltantes de una manera que sea específica para las implementaciones particulares, y se puede crear una instancia de esas subclases.

Sin clases abstractas, tendría que proporcionar implementaciones ficticias de los métodos que pretende invalidar ... lo que se podría hacer, pero luego habría el riesgo de olvidarse de implementar uno de ellos. El hecho de que algunos métodos permanezcan totalmente abstractos garantiza que las implementaciones reales deben llenar los vacíos, o seguir siendo abstractos y obligar a sus descendientes a hacerlo.

No es algo sin lo que el lenguaje no podría vivir. Pero es muy útil. Descubrirá qué tan útil es a medida que adquiere más competencia en el diseño de Java y OO.

(Tenga en cuenta que básicamente dijimos lo mismo, la última vez que planteó esta pregunta. Por lo tanto, si aún está confundido, es posible que desee ser más específico sobre lo que lo está confundiendo).





abstract-methods