Pourquoi les variables de classe sont-elles nécessaires? [Java]

introduction

<! - La version Java est 1.8.0_161. J'ai utilisé Sublime Text 3 comme éditeur. -> <! - J'ai appris qu'il existe deux types de Java, les méthodes de classe et les méthodes d'instance. -> Quand j'apprenais juste Java, "En instanciant une classe, vous pouvez utiliser les variables de la classe." Je pense que c'est souvent enseigné.

Cependant, si vous écrivez static lors de la déclaration d'une variable, vous pouvez utiliser cette variable sans instancier la classe.

Dans cet article, je vais vous montrer pourquoi certaines variables peuvent être utilisées sans instanciation.

Qu'est-ce qu'une variable de classe?

Les variables de classe sont des variables qui peuvent être utilisées sans instanciation. Les variables de classe sont utiles lorsque vous avez besoin d'une variable commune à chaque objet instancié et créé. Aussi, lors de l'utilisation de variables de classe

(nom de la classe).(Nom de la variable de classe)

ça ira. On a l'impression que c'est une propriété de la classe.

D'autre part, lors de l'utilisation de variables d'instance

(Nom de l'instance).(Nom de la variable d'instance)

ça ira. On a l'impression qu'il appartient à l'instance.

Variables appartenant à la classe

Par exemple, considérons la classe Circle, qui calcule l'aire d'un cercle lorsque vous entrez un rayon.

Chaque fois que vous entrez un rayon, un objet de type Cercle sera créé. Chaque objet a son propre rayon comme variable d'instance. Cependant, lors du comptage du nombre d'objets créés, il est utile d'avoir des variables appartenant à la classe plutôt que des variables d'instance appartenant à chaque objet.

Main.java


public class Main{
    public static void main(String args[]){

        for (int i = 0; i < args.length; i++){ //Entrez le rayon dans l'argument de ligne de commande
            double r = Double.parseDouble(args[i]);
            Circle circle = new Circle(r);     //Création d'objet de type Circle
            System.out.println("Area : " + circle.getArea());
        }

        System.out.println("The number of Circle objects : " + Circle.numberOfCircles);

    }
}

Circle.java


public class Circle{

    private double radius; //Rayon du cercle
    private double area;   //Zone du cercle

    public static int numberOfCircles = 0; //Variable de classe (représentant le nombre d'objets Circle)

    public Circle(double r){
        radius = r;
        numberOfCircles++; //Incrémenté chaque fois qu'un objet de type Circle est créé
    }
    
    public double getArea() {	
    	return Math.pow(radius, 2) * 3.14;	
    }
}

Si vous exécutez Main.java comme suit, ...

java Main 3 4 5 6

Le résultat de l'exécution est

Area : 28.26
Area : 50.24
Area : 78.5
Area : 113.04
The number of Circle objects : 4

Ce sera.

Résumé

Les variables de classe sont accessibles en commun par chaque objet instancié. Je pense que c'est difficile à transmettre dans l'exemple terne ci-dessus. ..

Nous prévoyons d'apporter des corrections et des ajouts au besoin. 2018/09/09: Ajout d'une méthode pour renvoyer la zone à la classe Circle.

<! - Oracle's The Java TM </ sup> Tutorials déclare: C'était fait. La traduction japonaise est suspecte, mais pardonnez-moi s'il vous plaît ...

Si plusieurs objets sont créés à partir de la même classe, chacun aura une variable d'instance différente. Dans le cas de la classe de vélo, la vitesse à laquelle la pédale est tournée, le rapport, la vitesse, etc. sont répertoriés comme variables d'instance. Chaque objet en forme de bicyclette a sa propre valeur pour ces variables et est stocké dans une adresse mémoire différente.

Lorsque vous avez besoin d'une variable commune à tous les objets, vous pouvez ajouter le modificateur statique. Les champs auxquels le modificateur static est ajouté lorsqu'ils sont déclarés sont appelés champs statiques ou variables de classe. Ceux-ci sont associés à la classe plutôt qu'à chaque objet. (Omis ci-dessous)

Je suis désolé, mais comme cela semble long, je n'ai présenté que le début. ->

Recommended Posts

Pourquoi les variables de classe sont-elles nécessaires? [Java]
Méthode de classe variable de classe Java
Pourquoi vous avez besoin d'un modèle de conception
[Java Silver] Que sont les variables de classe, les variables d'instance et les variables locales?
Les variables de tableau Java sont des types de référence
Les variables locales Java sont thread-safe
[Java] Différences entre les variables d'instance et les variables de classe
Pourquoi Java appelle-t-il un fichier une classe?
Programmation Java (clause statique et "variables de classe")
[Java] Héritage de classe
classe Scanner java
Classe Java HashMap
java (classe abstraite)
[WIP] Variables Java
[Java] Classe imbriquée
Classe anonyme Java
À propos de la classe Java
[java] Classe abstraite
[Java] Classe d'objets
Classe locale Java
Lorsqu'il y a des variables d'environnement dans les tests Java
Ce que j'ai appris en Java (partie 2) Que sont les variables?
Pourquoi java autorise la classe finale A {classe abstraite B {}}
À propos de la division de classe (Java)
À propos de la classe Java StringBuilder
[Java] À propos de la classe Singleton
Examen de la classe interne Java
Champ de type de classe Java
Programmation Java (méthode de classe)
À propos de la classe Java String
Pourquoi preventDefault est nécessaire
Programmation Java (structure de classe)
[Java] Types de variables et types
À propos de la classe abstraite de Java
Pourquoi la méthode get est nécessaire dans la classe Calendar
Si les variables ne sont plus mises en évidence dans l'éditeur Java d'Eclipse
Sérialisation d'objets Java pourquoi et quand
[Java] Référence de classe de wrapper Integer
Sous-chaîne de mémo Java (classe standard)
Astuces Java - Modificateurs de classe StaticUtility
Sous-chaîne de classe Java inflexible String
(Remarque) Classes / variables / méthodes Java
Longueur du mémo Java (classe standard)
Les égaux Java sont assez désagréables
Programmation Java (variables et données)
[Implémentation] Notes de classe de processus java
À propos des types de chargeur de classe Java
Comment utiliser la classe Java
[Java] Comparateur de la classe Collection
Définition et instanciation de classe Java
[Variables environnementales] rails Quelles sont les variables environnementales?
Mémo d'apprentissage Java (classe abstraite)
Quelles sont les variables pratiquement finales?
Que sont les méthodes de classe Ruby?
Résumé de la classe Java Math
[Java] Qu'est-ce que l'héritage de classe?
Comment utiliser les variables Java
Pourquoi implémenter une classe abstraite (Résumé)
[Notions de base Java] Qu'est-ce que la classe?
Que sont les métriques Java? _Memo_20200818