Cet article est un mémorandum. Bien qu'il s'agisse d'un contenu de niveau de référence, le code à publier dans cet article est ~~ ** L'erreur ** est le centre. C'est dans le but de publier la partie qui s'est réellement trompée lors du codage et de la publier pour une réflexion personnelle. ~~ De plus, je n'aborderai pas la partie profonde ici, car je la passerai en revue plus tard tout en étudiant les questions d'examen Java Silver.
Langue: Java11, JDK13.0.2 Environnement d'exploitation: Windows 10
Je me souviens avoir parlé d'objets et d'instances avec confusion auparavant, mais j'aimerais les aborder à nouveau.
Tout d'abord, préparez le cours Cat
comme d'habitude.
Cat.java
class Cat
{
public static int sumCats = 0;
private int age;
private double weight;
public Cat()
{
age = 0;
weight = 0.0;
sumCats++;
System.out.println("Un nouveau chat est arrivé!");
}
public void setCat(int a,double w)
{
age = a;
weight = w;
System.out.println("Ce chat est vieux" + age + "Âge, poids" + weight + "C'est kg.");
}
public static void showSumCats()
{
System.out.println("Maintenant au total" + sumCats + "Il y a deux chats.");
}
}
Prenons le cas où deux chats sont préparés en utilisant cette classe «Cat».
Cat
.
-Deux chats ont leurs propres champs «âge, poids».Dans le cas ci-dessus, les deux chats utilisent la ** variable d'instance **, qui est le champ associé à chaque objet, et la ** méthode d'instance **, qui est la méthode associée à l'objet. Avoir. Ces variables et méthodes d'instance "deviennent accessibles après la création de l'objet (« new »)».
Des malentendus que j'ai eu jusqu'à présent ・ Objet Object instance
⇒ Méthode de champ pour chaque objet = Méthode de variable d'instance * nouveau !! *
Cependant, vous souhaitez gérer certains membres (méthodes de champ) avant la création de l'objet. Par conséquent, les membres qui sont ** associés à la classe elle-même ** peuvent être déclarés et utilisés comme «statiques».
public static void showSumCats ()
est
Reportez-vous à la ** variable de classe sumCats
** déclarée comme public static int sumCats = 0;
, et ** constructeur Cat () ** est appelé chaque fois que new
est fait, et il est automatiquement incrémenté. Il est devenu. Ce lien "combien de fois les objets Cat ont été créés" avec "nombre total de chats".
Puisque showSumCats ()
est statique
, c'est une méthode qui peut être appelée même si" l'objet Cat n'a jamais été créé ". Par conséquent, "0 chat" peut être indiqué.
** Uniquement dans les méthodes d'instance **, this.age
et this.weight
peuvent être écrits pour indiquer uniquement les valeurs de champ associées à l'objet.
L'histoire des variables locales est omise.
Si vous ne comprenez pas bien si les variables / méthodes que vous allez gérer dans la fonction principale sont liées aux classes ou aux objets par static
, il y a pas mal de problèmes à résoudre ici.
J'écris et compile autant que possible des variables et des expressions moi-même, donc si je veux les citer complètement, je vais les décrire.
Easy Java 7e édition Java SE11 Silver Problem Collection (communément appelé Kuromoto)
Recommended Posts