Respuestas:
Por supuesto.
Declarar un resumen de clase solo significa que no permite que se cree una instancia por sí solo.
Declarar un método abstracto significa que las subclases deben proporcionar una implementación para ese método.
Los dos son conceptos separados, aunque obviamente no puede tener un método abstracto en una clase no abstracta. Incluso puede tener clases abstractas con final
métodos, pero nunca al revés.
Sí, tú puedes hacerlo. ¿Por qué no intentas hacer eso?
Sí tu puedes. La clase abstracta utilizada en Java significa que no puede crear un objeto de la clase. Y un método abstracto, las subclases tienen que proporcionar una implementación para ese método.
Por lo tanto, puede definir fácilmente una clase abstracta sin ningún método abstracto.
Como por ejemplo :
public abstract class AbstractClass{
public String nonAbstractMethodOne(String param1,String param2){
String param = param1 + param2;
return param;
}
public static void nonAbstractMethodTwo(String param){
System.out.println("Value of param is "+param);
}
}
Esto esta bien.
SÍ Puede crear una clase abstracta sin ningún método abstracto, el mejor ejemplo de clase abstracta sin método abstracto es HttpServlet
El método abstracto es un método que no tiene cuerpo, si declaró al menos un método en la clase, la clase debe declararse como un resumen es obligatorio PERO si declaraste la clase abstracta, no es obligatorio declarar el método abstracto dentro de la clase.
No puede crear objetos de clase abstracta, lo que significa que no se pueden crear instancias.
Sí, puede declarar una clase que no puede instanciar por sí misma con solo métodos que ya tienen implementaciones. Esto sería útil si quisiera agregar métodos abstractos en el futuro, o si no deseara que la clase se instanciara directamente aunque no tenga propiedades abstractas.
sí, podemos declarar una clase abstracta sin ningún método abstracto. el propósito de declarar una clase como abstracta no es instanciar la clase.
entonces dos casos
1) clase abstracta con métodos abstractos.
este tipo de clases, debemos heredar una clase de esta clase abstracta y debemos anular los métodos abstractos en nuestra clase, por ejemplo: clase GenricServlet
2) clase abstracta sin métodos abstractos.
este tipo de clases, debemos heredar una clase de esta clase abstracta, por ejemplo: el propósito de la clase HttpServlet es, aunque si no implementas tu lógica en la clase secundaria, puedes obtener la lógica principal
Sí, podemos tener una clase abstracta sin métodos abstractos ya que ambos son conceptos independientes. Declarar un resumen de clase significa que no se puede instanciar por sí solo y solo se puede subclasificar. Declarar un método abstracto significa que el método se definirá en la subclase.
Sí, puede definir una clase abstracta sin un método abstracto. Sin embargo, si no hay un método dentro, es mejor que utilice una interfaz
Si tu puedes hacerlo.
Declarar clase abstracta significa que ninguna otra clase instanciará la clase.
y debe haber al menos un método abstracto dentro de eso y el significado de eso, puede declarar un método abstracto en esa clase si no está declarando un método que está bien.
ejemplo:
public abstract class abs {
protected int cx = 0, cy = 0;
public void p() {
System.out.print("hello");
}
}
esto funcionará con seguridad.
Sí tu puedes. A veces le pueden hacer esta pregunta: ¿cuál es el propósito de hacer esto? La respuesta es: a veces tenemos que restringir la instanciación de la clase por sí misma. En ese caso, queremos que el usuario extienda nuestra clase abstracta y cree una instancia de la clase secundaria
Puedes, la pregunta en mi mente es más deberías. Desde el principio, diré que no hay una respuesta rápida y precisa. Haga lo correcto para su situación actual.
Para mí, la herencia implica una relación "es-un". Imagine una clase de perro, que se puede ampliar con subtipos más especializados (alsaciano, caniche, etc.). En este caso, hacer que la clase de perro sea abstracta puede ser lo correcto ya que los subtipos son perros. Ahora imaginemos que los perros necesitan un collar. En este caso, la herencia no tiene sentido: no tiene sentido tener una relación 'es-un' entre perros y collares. Esta es definitivamente una relación 'tiene-a', el collar es un objeto colaborador. Hacer que el collar sea abstracto solo para que los perros puedan tener uno no tiene sentido.
A menudo encuentro que las clases abstractas sin métodos abstractos están expresando realmente una relación "tiene-a". En estos casos, generalmente encuentro que el código se puede factorizar mejor sin usar la herencia. También encuentro que las clases abstractas sin método abstracto son a menudo un olor a código y, como mínimo, deberían dar lugar a que surjan preguntas en una revisión de código.
Nuevamente, esto es completamente subjetivo. Es muy posible que haya situaciones en las que una clase abstracta sin métodos abstractos tenga sentido, depende totalmente de la interpretación y la justificación. Tome la mejor decisión para lo que sea en lo que esté trabajando.
En realidad, no hay ningún medio si una clase abstracta no tiene ningún método abstracto. Una clase abstracta es como un padre. Este padre tiene algunas propiedades y comportamientos, cuando tú de niño quieres ser hijo del padre, el padre dice que el niño (tú) debe ser así, es nuestro MOTO, y si no quieres hacerlo, tú no eres mi hijo.
WindowDecorator
yCoffeeDecorator
sonabstract
clases, pero ninguno incluye unabstract
método.