Java - L'Extension Des Classes
J'ai une Réunion de classe et je veux créer un BusinessMeeting classe qui s'étend de la Réunion.
C'est ma Rencontre de la classe:
public class Meeting {
private String name;
private String location;
private int start, stop;
public Meeting(String name, String location, int start, int stop) {
this.name = name;
this.location = location;
this.start = start;
this.stop = stop;
}
C'est mon BusinessMeeting classe:
public class BusinessMeeting extends Meeting {
public BusinessMeeting() {
super();
}
}
Dans mon BusinessMeeting classe, j'obtiens l'erreur:
constructeur de Réunion dans les réunions de classe ne peut pas être appliqué pour les types de donnée;
requis: String,String,int,int
trouvé: pas d'arguments
Je ne suis pas vraiment sûr pourquoi j'obtiens ce message d'erreur. Ne pas le BusinessMeeting classe hérite de toutes les variables de ma Réunion de classe?
Que pensez-vous
Les sous-classes héritent de tous les membres, à l'exception des constructeurs.
double possible de Java héritage constructeurs
pouvez-vous rejoindre ici? chat.stackoverflow.com/rooms/40335/... s'il vous plaît!
super()
est en train de faire?Les sous-classes héritent de tous les membres, à l'exception des constructeurs.
double possible de Java héritage constructeurs
pouvez-vous rejoindre ici? chat.stackoverflow.com/rooms/40335/... s'il vous plaît!
OriginalL'auteur Sameer Anand | 2013-10-21
Vous devez vous connecter pour publier un commentaire.
Disent maintenant que vous désirez prolonger votre
BusinessMeeting
classe avec unbusinessId
.OriginalL'auteur flavian
Le constructeur que vous avez créé accepte 4 arguments et vous l'appelez sans.
Si vous voulez qu'il soit initialisé sans paramètres - ajouter un constructeur vide à
Meeting
:Mineur faute de frappe, si l'on excepte = accepte
L'ajout d'un constructeur vide à
BusinessMeeting
ne va pas aider quand il appellesuper();
à une super classe qui manque un 0-argument du constructeur.merci - c'est ce qui arrive lorsque l'anglais n'est pas votre première langue...
Mineur faute de frappe, accpets = accepte
OriginalL'auteur alfasin
Vous appelez super classe constructeur avec argument vide:
Mais votre super classe a l'constructeur:
Meeting(String, String, int, int)
.Avec super(), la super-classe sans argument constructeur est appelé(Si elle existe). Avec super(liste de paramètres), le constructeur de la superclasse avec un paramètre correspondant de la liste est appelé. Donc, soit vous devez ajouter un constructeur avec un argument vide à la Réunion par exemple,
public Meeting(){}
ou vous avez besoin d'appelersuper(String, String, int, int)
Découvrez: À l'aide du mot-Clé super
OriginalL'auteur Sage
Par la déclaration d'un constructeur, votre
Meeting
classe n'ont pas de 0 argument du constructeur, qui est ce que vous essayez d'appeler avecsuper();
. Vous devez appeler un super constructeur qui correspond à la disposition des constructeurs dans votre super classe.Pour résoudre ce problème, ajoutez un 0-argument au constructeur d'
Meeting
classe, ou appeler le 4-argument du constructeur que vous avez déjà.OriginalL'auteur nhgrif
Comme alfasin dit, vous avez créé un constructeur. Le standard états que ce constructeur est créé si aucun autre constructeur n'est défini. Vous devez créer un constructeur sans paramètre vous-même si vous souhaitez appel à super()
OriginalL'auteur Scott
Oui et non. Cela dépend de comment vous déclarez les variables.
Variables privées dans la super-classe ne sont pas accessibles par la sous-classe. Habituellement, vous ajoutez protégé getter et setter-Méthodes de la superclasse. Ces méthodes peuvent être utilisées dans la sous-classe pour accéder aux variables.
(parfois bâclée façon serait de déclarer les variables d'eux-mêmes protégées)
Mais en ce qui concerne l'erreur que vous avez mentionné:
Vous appelez
super()
. Cela signifie que vous êtes d'appeler le constructeur par défaut de la classe mère. Comme vous l'avez écrit votre propre constructeur de la superclasse, il n'y a pas de constructeur par défaut. Celui-ci n'est créé que lorsque vous ne définissez pas de constructeur.Par conséquent, lors de l'appel au constructeur de la superclasse qui prend, dans votre cas, quatre arguments - vous à transmettre ces arguments via
super()
comme ceci:super("a name", "a location", 0, 1)
OriginalL'auteur Stefan Freitag
Vous devez ajouter un constructeur avec paramètres vides en réunion de classe ou vous pouvez appeler super(nom,emplacement,de démarrage,d'arrêt) à la place de super() dans BussinessMeeting classe
OriginalL'auteur Zapateus