179 votes

inutile de mettre de super() dans le constructeur?

ce n'est pas un mettre automatiquement par le compilateur si je ne le met pas dans une sous-classe du constructeur?

cela signifie que je n'ai pas encore les soins à ce sujet? dans certains articles qu'ils ont mis dehors.

et si je l'ai eu 1 constructeur avec arguments, ce que ce sera LE constructeur, ou prend-elle un constructeur sans argument de la liste?

255voto

cletus Points 276888

Tout d'abord quelques termes:

  • Aucun des arguments du constructeur: un constructeur sans paramètres;
  • Accessible sans args constructeur: aucun des arguments du constructeur de la superclasse visible à la sous-classe. Cela signifie qu'il soit public ou protégé ou, si les deux classes sont dans le même package, des accès; et
  • Constructeur par défaut: le public n'-args constructeur ajouté par le compilateur lorsqu'il n'est pas explicite d'un constructeur dans la classe.

Donc, toutes les classes ont au moins un constructeur.

Les sous-classes les constructeurs peuvent spécifier que la première chose qu'ils font quel constructeur de la super-classe pour appeler avant d'exécuter le code dans le constructeur de la sous-classe.

Si le constructeur de sous-classe ne spécifie pas le constructeur de la superclasse d'invoquer ensuite le compilateur appelle automatiquement la accessible sans args constructeur de la superclasse.

Si la super-classe n'a pas de no-arg constructeur ou il n'est pas accessible, alors ne précisant pas le constructeur de la superclasse d'être appelé (dans le constructeur de sous-classe) est une erreur de compilation, de sorte qu'il doit être spécifié.

Par exemple:

public class Base { }
public class Derived extends Base { }

C'est bien parce que si vous ajoutez pas de constructeur explicitement Java met dans un établissement public de constructeur par défaut pour vous.

public class Base { }
public class Derived extends Base { public Derived(int i) { } }

Aussi bien.

public class Base { public Base(String s) { } }
public class Derived extends Base { }

Le ci-dessus est une erreur de compilation car la Base n'a pas de constructeur par défaut.

public class Base { private Base() { } }
public class Derived extends Base { }

C'est aussi une erreur, car de Base par défaut du constructeur est privé.

61voto

lemon Points 2490

Si le super constructeur de la classe n'a pas d'arguments Java appelle automatiquement pour vous. Si elle a des arguments, vous obtiendrez une erreur.

src: http://java.sun.com/docs/books/tutorial/java/IandI/super.html

0voto

giri Points 6255

Si votre méthode remplace l'un de ses super-classe de méthodes, vous pouvez appeler la méthode remplacée par l'utilisation du mot-clé super.

La syntaxe pour appeler un constructeur de la superclasse

super();  
--or--
super(parameter list);

Avec super(), la super-classe constructeur sans argument est appelé. Avec super(liste de paramètres), la super-classe constructeur avec un paramètre correspondant de la liste est appelée.

Remarque: Si un constructeur ne pas appeler explicitement un constructeur de la superclasse, le compilateur Java insère automatiquement un appel au constructeur sans argument de la classe mère. Si la super-classe ne possède pas de constructeur sans argument, vous obtiendrez une erreur de compilation. L'objet n'avoir un tel constructeur, de sorte que si l'Objet est la seule super-classe, il n'y a pas de problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X