una sirve resueltos que para interfaces ejercicios ejemplo clases clase abstractas abstracta java class variables abstract

sirve - Java-¿Clase abstracta para contener variables?



ejercicios resueltos de clases abstractas en java (3)

¿Es una buena práctica dejar que las clases abstractas definan variables de instancia?

public abstract class ExternalScript extends Script { String source; public abstract void setSource(String file); public abstract String getSource(); }

La subclase, ExternalJavaScript.class, obtendría automáticamente la variable fuente, pero creo que es más fácil leer el código si todas las subclases definen la fuente en lugar de la herencia.

¿Cual es tu consejo?

/Adán


Hubiera pensado que algo así sería mucho mejor, ya que está agregando una variable, ¿por qué no restringir el acceso y hacerlo más limpio? Su getter / setters debe hacer lo que dicen en la lata.

public abstract class ExternalScript extends Script { private String source; public void setSource(String file) { source = file; } public String getSource() { return source; }

Volviendo a la pregunta, ¿alguna vez te molestas en ver dónde está el código getter / setter cuando lo lees? Si todos ellos obtienen y configuran, entonces no tiene que preocuparse por lo que la función ''hace'' cuando lee el código. Hay algunas otras razones para pensar también:

  • Si la fuente estaba protegida (de modo que fuera accesible por subclases), entonces el código se vuelve desordenado: ¿quién está cambiando las variables? Cuando se trata de un objeto, se vuelve difícil cuando se necesita refactorizar, mientras que un método tiende a facilitar este paso.
  • Si los métodos getter / setter no son get y setting, entonces descríbalos como algo más.

Siempre piense si su clase es realmente diferente o no, y eso debería ayudar a decidir si necesita algo más.


Por supuesto. La idea general de las clases abstractas es que pueden contener algún comportamiento o datos que requiera que contengan todas las subclases. Piense en el ejemplo simple de WheeledVehicle: debe tener una variable de miembro de núm. Quiere que todas las subclases tengan esta variable. Recuerde que las clases abstractas son una característica muy útil al desarrollar API, ya que pueden garantizar que las personas que amplíen su API no lo rompan.


¿Seguro Por qué no?
Las clases base abstractas son solo una conveniencia para alojar el comportamiento y los datos comunes a 2 o más clases en un solo lugar para la eficiencia de almacenamiento y mantenimiento. Es un detalle de implementación.
Sin embargo, tenga cuidado de no utilizar una clase base abstracta donde debería utilizar una interfaz. Refiérase a la interfaz frente a la clase base