Risposte:
Ovviamente.
Dichiarare un abstract di classe significa solo che non si consente che venga istanziato da solo.
Dichiarare un abstract del metodo significa che le sottoclassi devono fornire un'implementazione per quel metodo.
I due sono concetti separati, anche se ovviamente non puoi avere un metodo astratto in una classe non astratta. Puoi anche avere classi astratte con final
metodi, ma mai il contrario.
Si, puoi farlo. Perché non provi a farlo?
Si, puoi. La classe astratta utilizzata in java significa che non è possibile creare un oggetto della classe. E un metodo astratto le sottoclassi devono fornire un'implementazione per quel metodo.
Quindi puoi facilmente definire una classe astratta senza alcun metodo astratto.
Per esempio:
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);
}
}
Questo va bene.
SÌ Puoi creare una classe astratta senza alcun metodo astratto il miglior esempio di classe astratta senza metodo astratto è HttpServlet Il
metodo astratto è un metodo che non ha corpo, Se hai dichiarato almeno un metodo nella classe, la classe deve essere dichiarata come abstract è obbligatorio MA se si dichiara la classe abstract non è obbligatorio dichiarare il metodo abstract all'interno della classe.
Non è possibile creare oggetti di classe astratta, il che significa che non è possibile istanziarlo.
Sì, puoi dichiarare una classe che non puoi istanziare da sola solo con metodi che hanno già implementazioni. Ciò sarebbe utile se si desidera aggiungere metodi astratti in futuro o se non si desidera che la classe venga istanziata direttamente anche se non ha proprietà astratte.
sì, possiamo dichiarare una classe astratta senza alcun metodo astratto. lo scopo di dichiarare una classe come astratta non è di istanziare la classe.
quindi due casi
1) classe astratta con metodi astratti.
questo tipo di classi, dobbiamo ereditare una classe da questa classe astratta e dobbiamo sovrascrivere i metodi astratti nella nostra classe, es: classe GenricServlet
2) classe astratta senza metodi astratti.
questo tipo di classi, dobbiamo ereditare una classe da questa classe astratta, es: lo scopo della classe HttpServlet è anche se se non implementi la logica nella classe figlia puoi ottenere la logica genitore
Sì, possiamo avere una classe astratta senza metodi astratti poiché entrambi sono concetti indipendenti. Dichiarare un abstract di classe significa che non può essere istanziato da solo e può solo essere sottoclassato. Dichiarare un abstract del metodo significa che il metodo verrà definito nella sottoclasse.
Si, puoi farlo.
dichiarare la classe astratta significa che la classe non verrà istanziata da nessun'altra classe.
e dovrebbe esserci almeno un metodo astratto al suo interno e il significato di quello che puoi dichiarare metodo astratto in quella classe se non stai dichiarando metodo che è ok.
esempio:
public abstract class abs {
protected int cx = 0, cy = 0;
public void p() {
System.out.print("hello");
}
}
questo funzionerà di sicuro.
Si, puoi. A volte potresti chiederti che qual è lo scopo di farlo? La risposta è: a volte dobbiamo limitare la classe dall'istanziare da sola. In tal caso, vogliamo che l'utente estenda la nostra classe Abstract e installi la classe figlia
Sì, puoi definire una classe astratta senza un metodo astratto. Tuttavia, se non è presente alcun metodo all'interno, potresti utilizzare un'interfaccia
Puoi, la domanda nella mia mente è più dovresti. Fin dall'inizio, dirò che non esiste una risposta dura e veloce. Fai la cosa giusta per la tua situazione attuale.
Per me l'eredità implica una relazione "è-un". Immagina una classe di cani, che può essere estesa con sottotipi più specializzati (alsaziano, barboncino, ecc.). In questo caso, rendere astratta la classe del cane può essere la cosa giusta da fare poiché i sottotipi sono cani. Ora immaginiamo che i cani abbiano bisogno di un collare. In questo caso l'ereditarietà non ha senso: non ha senso avere una relazione "è-un" tra cani e collari. Questa è sicuramente una relazione "ha-un", il collare è un oggetto di collaborazione. Rendere astratto il collare solo in modo che i cani possano averne uno non ha senso.
Trovo spesso che le classi astratte senza metodi astratti esprimano davvero una relazione "ha-un". In questi casi di solito trovo che il codice possa essere meglio scomposto senza utilizzare l'ereditarietà. Trovo anche che le classi astratte senza un metodo astratto siano spesso un odore di codice e almeno dovrebbero portare a domande sollevate in una revisione del codice.
Di nuovo, questo è del tutto soggettivo. Potrebbero esserci situazioni in cui una classe astratta senza metodi astratti ha senso, dipende interamente dall'interpretazione e dalla giustificazione. Prendi la decisione migliore per qualunque cosa tu stia lavorando.
In realtà non c'è motivo se una classe astratta non ha alcun metodo astratto. Una classe astratta è come un padre. Questo padre ha alcune proprietà e comportamenti, quando tu da bambino vuoi essere un figlio del padre, il padre dice che il bambino (tu) deve essere così, è il nostro MOTO, e se non vuoi farlo, tu non sono mio figlio.
WindowDecorator
eCoffeeDecorator
sonoabstract
classi, ma nessuno dei due include unabstract
metodo.