Génération d'instances de classe Java, partie 4

À propos de la rédaction d'un article

Je ne fais pas référence aux diapositives de classe, donc je pense que c'est expliqué sous un angle différent. Peut-être que je le dis (devrait).

S'il vous plaît laissez-moi savoir si vous pouvez faire une erreur car il s'agit d'une librairie publicitaire!

Il se compose de 4 parties

Part.1 Créons une instance Nettoyeur Part.2 avec constructeur Part.3 Contrôlons l'accès et limitons la valeur entrante Part.4 Essayez d'utiliser des variables / méthodes de classe ← Imakoko

Attache

Dans la partie précédente, les modificateurs d'accès étaient utilisés pour restreindre l'accès depuis l'extérieur de la classe.

class DigitalStudentCard{
  //Numéro d'étudiant
  private int num;

  //Nom
  private String name;

  //constructeur
  DigitalStudentCard(int num, String name){
    //Argument num à l'instance num(this.num)Remplacer par
    this.num = num;

    //Aussi
    this.name = name;
  }

  //Méthode de sortie (obtenir une auto-introduction)
  String getSelfIntroduction(){
    return "Numéro d'étudiant: " + num + "Nom: " + name);
  }
}

Avec le modificateur d'accès private, les variables et les méthodes ne sont accessibles qu'à l'intérieur de la classe. En restreignant l'accès, vous pouvez créer des getters / setters, créer des règles lors de la modification de valeurs ou interdire les modifications de valeur en premier lieu.

Qu'est-ce que la statique?

Il semble que «statique» signifie «statique» lorsqu'il est traduit en japonais. Ce n'est pas sexuel. </ s>

Il y aura autant de variables d'instance et de méthodes d'instance que d'instances. Les variables statiques et les méthodes statiques ne sont pas créées plusieurs fois, une seule est créée pour une classe.

Pas besoin de créer une instance lors du référencement d'une méthode ou d'une variable static. </ b> Vous pouvez l'appeler comme nom de classe.nom de variable,nom de classe.nom de méthode ().

j'écrirai

Créez une nouvelle classe CardManager qui compte le nombre d'identifiants étudiants émis.

CardManager.java


class CardManager{
  static int totalCardCount;
  
  static int getTotalCount(){
    return totalCardCount;
  }

  static void countUpTotalCount(){
    totalCardCount++;
  }
}

Ajoutons donc un mécanisme pour dire au constructeur de la classe DigitalStudentCard qu'elle a été émise.

DigitalStudentCard.java


class DigitalStudentCard{
  //Numéro d'étudiant
  private int num;

  //Nom
  private String name;

  //constructeur
  DigitalStudentCard(int num, String name){  
    //Argument num à l'instance num(this.num)Remplacer par
    this.num = num;

    //Aussi
    this.name = name;

    //Méthodes d'appel CardManager
    CardManager.coutUpTotalCount();
  }

  /*Abréviation*/
}

Cela vous permettra de compter le nombre d'instances de la classe DigitalStudentCard.

class UseClass{
  public static void main(String[] args){
    //Instancier de manière appropriée
    DigitalStudentCard tanaka = new DigitalStudentCard(118114, "Kakuei Tanaka");
    DigitalStudentCard noguchi = new DigitalStudentCard(118514, "Hideyo Noguchi");
    DigitalStudentCard sakamoto = new DigitalStudentCard(118060, "Ryoma Sakamoto");
    DigitalStudentCard oda = new DigitalStudentCard(118010, "Oda Nobunaga");

    //Essayez de sortir totalCount
    System.out.println(CardManager.getTotalCount());
        // 4
  }
}

Au fait

Je souhaite utiliser la même valeur à divers endroits! Je veux utiliser la même méthode! Quel moment propice.

Par exemple, il semble que les méthodes qui organisent les chaînes de caractères et les méthodes qui effectuent un traitement de calcul fixe sont organisées. Si vous l'utilisez pour une méthode d'une classe qui n'a pas de variable d'instance, vous n'avez pas à vous soucier de créer une instance, donc je pense que c'est bien.

Mais ... soyez prudent car en utiliser beaucoup gaspillera de la mémoire.

Ce n'est pas si bien qu'il y ait beaucoup de variables avec une large portée ou des variables statiques, donc si vous pensez "que ...?", Envisagez une refonte.

Recommended Posts