Java: Comment Peut-être de l'enfant le constructeur de la classe classe de neutraliser constructeur parent?
Comment Peut être l'enfant le constructeur de la classe classe de neutraliser un constructeur parent?
Je veux dire de l'Enfant dans le constructeur, nous devons utiliser super()- est un moyen de créer un objet parent existent?
Exemple avec super:
class abstract Parent{
protected String name;
public Parent(String name){
this.name=name;
}
}
class Child extends Parent{
public Child(String name,int count){
super(name);
}
}
OriginalL'auteur Yosef | 2010-08-17
Vous devez vous connecter pour publier un commentaire.
D'étendre l'objet parent, qui est initialisé lors de l'initialisation de l'enfant. Tout comme l'obligation d'être initialisé, le parent nécessite un nom. Ce ne peut être donnée lors de l'initialisation de l'objet enfant.
Donc, pour répondre à votre question, pas de
OriginalL'auteur TheLQ
"Parent" et "enfant" ne sont pas les mots appropriés, ici. Un enfant n'est pas un type de parent (j'espère que mes enfants ne sont pas pour au moins une décennie, mais c'est une autre affaire).
Envisager le même code avec des noms différents:
Maintenant, comment pouvez-vous avoir un éléphant qui n'est pas un animal?
En fait, l'Éléphant est la sous-classe (comme dans le substantif). Il sous-classes d'Animaux (comme dans le verbe).
OriginalL'auteur Jon Hanna
Pourquoi seriez-vous le sous-classement de quelque chose, mais ne pas la construire? Si votre code, c'est probablement à cause d'une mauvaise conception. Java exige que vous appelez la mère du constructeur.
Soins à élaborer? Je dirais que d'un test qui a besoin de se moquer d'un constructeur de la classe super indique probablement un problème avec la conception.
J'ai été la mise à jour de tests unitaires, hier, où il y avait une connexion DB être fait dans le constructeur d'une classe qui était en train de spy-ed via Mockito. Il a été lancer une exception (et forestières, et de l'avaler) lors de la construction pour les tests. Je pensais qu'il serait bien de remplacer ce constructeur sans appel de la mère. J'ai fini par faire un enfant le constructeur de la classe avec une signature différente. J'ai effectivement eu quelques commentaires que c'était une mauvaise solution, mais c'est la situation que je pensais.
OriginalL'auteur Juan Mendes
Une classe enfant peut changer ce que les objets dans un constructeur parent point de par super.ParentClassVariable = thingToBeChanged;
Maintenant le moment de vous faire de l'enfant un objet, au lieu d'avoir des méthodes de Parents d'utilisation ...(Système d'.en) comme entrée, les méthodes de Parent pour les utiliser ...(nom de fichier)
OriginalL'auteur CaptainNicCard