Singleton vs. Clase estática::
Las principales diferencias entre estas 2 radican en:
- Singleton se puede instanciar (sólo una vez).
- Singleton puede derivar de otras clases (herencia).
- Singleton puede implementar múltiples interfaces.
- Las clases estáticas sólo permiten métodos estáticos.
Definición clase abstracta:: (comparando con interfaces)
- Una clase abstracta permite definir funcionalidad común para las clases que van a heredar de esta (o sea las instancias de las clases hijas). Por lo que se hereda el comportamiento definido de implementacion en implementacion.
- Si tan solo un método es abstracto la clases debe declararse abstracta también.
- Por defecto los miembros de la interfaz son public static final, por lo que no escribirlos en la definición no genera cambios.
- Los métodos de una interfaz son por defecto public abstract.
- Una clase es la definición de un objeto.
- Un objeto es la instancia de una clase.
- Un objeto posee estados, es decir guarda valores en los atributos definidos de la clase, estos estados existen por cada instancia creada.