Réponses:
Bien sûr.
Déclarer un résumé de classe signifie uniquement que vous ne l'autorisez pas à être instancié seul.
Déclarer un résumé de méthode signifie que les sous-classes doivent fournir une implémentation pour cette méthode.
Les deux sont des concepts séparés, bien que vous ne puissiez évidemment pas avoir de méthode abstraite dans une classe non abstraite. Vous pouvez même avoir des classes abstraites avec des final
méthodes, mais jamais l'inverse.
Oui tu peux le faire. Pourquoi tu n'essaies pas de faire ça?
Oui, vous pouvez. La classe abstraite utilisée dans java signifie que vous ne pouvez pas créer un objet de la classe. Et une méthode abstraite que les sous-classes doivent fournir une implémentation pour cette méthode.
Ainsi, vous pouvez facilement définir une classe abstraite sans aucune méthode abstraite.
Comme par exemple :
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);
}
}
C'est bon.
OUI Vous pouvez créer une classe abstraite sans aucune méthode abstraite le meilleur exemple de classe abstraite sans méthode abstraite est HttpServlet La
méthode abstraite est une méthode qui n'a pas de corps, Si vous avez déclaré au moins une méthode dans la classe, la classe doit être déclarée comme une abstract c'est obligatoire MAIS si vous avez déclaré la classe abstraite, il n'est pas obligatoire de déclarer la méthode abstraite à l'intérieur de la classe.
Vous ne pouvez pas créer d'objets de classe abstraite, ce qui signifie qu'il ne peut pas être instancié.
Oui, vous pouvez déclarer une classe que vous ne pouvez pas instancier seule avec uniquement des méthodes qui ont déjà des implémentations. Cela serait utile si vous souhaitez ajouter des méthodes abstraites à l'avenir, ou si vous ne souhaitez pas que la classe soit directement instanciée même si elle n'a pas de propriétés abstraites.
oui, nous pouvons déclarer une classe abstraite sans aucune méthode abstraite. le but de déclarer une classe comme abstraite n'est pas d'instancier la classe.
donc deux cas
1) classe abstraite avec des méthodes abstraites.
ces types de classes, nous devons hériter d'une classe de cette classe abstraite et remplacer les méthodes abstraites de notre classe, ex: classe GenricServlet
2) classe abstraite sans méthodes abstraites.
ces types de classes, nous devons hériter d'une classe de cette classe abstraite, ex: le but de la classe HttpServlet est de faire bien que si vous n'implémentez pas votre logique dans la classe enfant, vous pouvez obtenir la logique parent
Oui, nous pouvons avoir une classe abstraite sans méthodes abstraites car les deux sont des concepts indépendants. Déclarer une classe abstraite signifie qu'elle ne peut pas être instanciée seule et ne peut être que sous-classée. Déclarer un résumé de méthode signifie que la méthode sera définie dans la sous-classe.
Oui, tu peux faire ça.
déclarer une classe abstraite signifie que la classe ne sera instanciée par aucune autre classe.
et il devrait y avoir au moins une méthode abstraite à l'intérieur et la signification de cela, vous pouvez déclarer une méthode abstraite dans cette classe si vous ne déclarez pas de méthode que son ok.
exemple:
public abstract class abs {
protected int cx = 0, cy = 0;
public void p() {
System.out.print("hello");
}
}
cela fonctionnera à coup sûr.
Oui, vous pouvez. Parfois, on vous pose cette question: quel est le but de cela? La réponse est: parfois, nous devons empêcher la classe d'instancier d'elle-même. Dans ce cas, nous voulons que l'utilisateur étende notre classe abstraite et instancie la classe enfant
Oui, vous pouvez définir une classe abstraite sans méthode abstraite. Cependant, s'il n'y a pas de méthode à l'intérieur, vous feriez mieux d'utiliser une interface
Vous pouvez, la question dans mon esprit est plus si vous. Dès le début, je dirai qu'il n'y a pas de réponse dure et rapide. Faites ce qui convient à votre situation actuelle.
Pour moi, l'héritage implique une relation «est-un». Imaginez une classe de chien, qui peut être étendue par des sous-types plus spécialisés (Alsacien, Caniche, etc.). Dans ce cas, faire un résumé de la classe de chien peut être la bonne chose à faire puisque les sous-types sont des chiens. Imaginons maintenant que les chiens aient besoin d'un collier. Dans ce cas, l'héritage n'a pas de sens: il est absurde d'avoir une relation «est-un» entre les chiens et les colliers. C'est définitivement une relation «has-a», le collier est un objet collaboratif. Rendre le collier abstrait juste pour que les chiens puissent en avoir un n'a pas de sens.
Je trouve souvent que les classes abstraites sans méthodes abstraites expriment vraiment une relation «has-a». Dans ces cas, je trouve généralement que le code peut être mieux factorisé sans utiliser l'héritage. Je trouve également que les classes abstraites sans méthode abstraite sont souvent une odeur de code et devraient à tout le moins conduire à soulever des questions lors d'une révision de code.
Encore une fois, c'est entièrement subjectif. Il peut bien y avoir des situations où une classe abstraite sans méthodes abstraites a du sens, cela dépend entièrement de l'interprétation et de la justification. Prenez la meilleure décision pour tout ce sur quoi vous travaillez.
En fait, il n'y a aucun moyen si une classe abstraite n'a pas de méthode abstraite. Une classe abstraite est comme un père. Ce père a des propriétés et des comportements, quand, en tant qu'enfant, vous voulez être un enfant du père, le père dit que l'enfant (vous) doit être ainsi, c'est notre MOTO, et si vous ne voulez pas faire, vous ne sont pas mon enfant.
WindowDecorator
etCoffeeDecorator
sont desabstract
classes, mais aucun ne comprend uneabstract
méthode.