Java à l'Aide de l'Accesseur et Mutateur méthodes
Je suis en train de travailler sur un devoir à la maison. Je suis confus sur la façon dont il devrait être fait.
La question est:
Créer une classe appelée carte d'identité qui contient le nom d'une personne, le numéro d'identification,
et le nom d'un fichier contenant le photogrpah. Écrire
accesseur et mutateur méthodes pour chacun de ces domaines. Ajouter l'
à la suite de deux constructeurs surchargés pour la classe:public carte d'identité() public carte d'identité(String n, int ID, String filename)
Tester votre programme par la création de différents ojbects à l'aide de ces deux
les constructeurs et l'impression de leurs valeurs sur la console à l'aide de la
accesseur et mutateur méthodes.
J'ai ré-écrit jusqu'à présent:
public class IDCard {
String Name, FileName;
int ID;
public static void main(String[] args) {
}
public IDCard()
{
this.Name = getName();
this.FileName = getFileName();
this.ID = getID();
}
public IDCard(String n, int ID, String filename)
{
}
public String getName()
{
return "Jack Smith";
}
public String getFileName()
{
return "Jack.jpg";
}
public int getID()
{
return 555;
}
}
Un accesseur est pas censé être statique.
Vous avez des dizaines de tutoriels à propos de l'encapsulation. Aussi, le respect des conventions de nommage.
Supprimer le mot-clé static de vos méthodes. Aussi, vous pouvez peut-être surpris de constater que vous n'avez pas de constructeurs définis parce que vous mettez un
static void
en face de chacun d'eux, ce qui fait de leur mal nommée méthodes globales. Utiliser les conventions de nommage Java - vous écrire plus facile à gérer et facile à comprendre dans le futur, en le faisant.Tous vos statique sont faux et le mal, le seul statique de la méthode main. Vous avez besoin de lire et de comprendre la différence entre la statique et de l'instance, comme vous le montrent très clairement que l'incompréhension de la statique. Ce n'est pas vraiment un mot-clé de la magie qui fait tout mieux plus vous l'utilisez, il cause plus de problèmes, plus il est utilisé.
OriginalL'auteur Pichu | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
Reprenons les bases:
"Accesseur" et "Mutateur" sont juste des noms de fantaisie pour un getter et un setter.
Un getter, "Accesseur", renvoie à une catégorie de variable ou de sa valeur. Un setter, "Mutateur", définit une variable de classe de pointeur ou de sa valeur.
Donc, vous devez d'abord créer une classe avec certaines variables get/set:
Mais oh! Si vous instancier cette classe les valeurs par défaut de ces variables sera vide de sens.
B. T. W. "instancier" est un mot de fantaisie pour faire:
Donc - nous allons définir un constructeur par défaut, c'est la méthode appelée lorsque vous "instancier" d'une classe.
Mais que faire si nous savons les valeurs que nous voulons donner à nos variables? Donc, nous allons faire un autre constructeur, qui prend des paramètres:
Wow - c'est gentil. Mais stupide. Parce que nous n'avons aucun moyen d'accéder à l' (=lecture) les valeurs de nos variables. Donc, nous allons ajouter un getter, et pendant que nous y sommes, ajouter un setter ainsi:
Nice. Maintenant, nous pouvons accéder
mName
. Ajouter le reste des accesseurs et des mutateurs et vous êtes maintenant un certifié Java débutant.Bonne chance.
Façon incroyable d'explication.
Incroyable explication! J'aime quand les gens se retourner à la base.
OriginalL'auteur Vaiden
Vous devez supprimer le
static
de vos méthodes d'accès à ces méthodes doivent être les méthodes d'instance et d'accéder aux variables d'instanceVous pouvez la créer un
IDCard
et utiliser l'accesseur comme ceci:Chaque fois que vous appelez
new
une nouvelle instance de laIDCard
sera créé et il aura ses propres copies des 3 variables.Si vous utilisez le
static
mot-clé puis ces variables sont communes à l'ensemble de tous les cas deIDCard
.Un couple de choses à garder à l'esprit:
name
pasName
.Boris, est-ce une bonne pratique pour ajouter des accesseurs dans le constructeur?
pas de. À moins que votre accesseurs sont
final
alors vous êtes à l'appel de méthodes qui peuvent être annulées. Dans ce cas, le constructeur de la superclasse serait de l'appel de méthodes à partir de la sous-classe avant il a été entièrement initialisé. C'est un très insidieuse bug.OriginalL'auteur Boris the Spider