[JAVA] À propos des classes et des instances (évolution)

Comment j'ai écrit cet article

Dans le dernier message

Différence entre classe et instance

J'ai écrit un article.

À titre d'exemple, j'ai créé une voiture en tant que classe et créé une instance de voiture avec le nom "Benz" comme instance, mais après avoir reçu un commentaire de la personne qui a lu l'article indiquant que l'explication était approximative, j'ai écrit le contenu précédent J'écrirai un article couvert. (L'article précédent a été réduit pour permettre aux débutants d'imaginer plus facilement les classes et les instances.)

Quelle partie de l'explication était grossière en premier lieu?

Voici la partie que vous avez soulignée.

Chaque instance a des caractéristiques différentes. Si vous fabriquez une voiture noire, certaines d'entre elles seront des voitures Toyota, d'autres seront des voitures Benz, elles seront de taille et de forme différentes, et aucune d'elles n'aura la même instance.

À cet égard,

En premier lieu, Toyota a un dessin de conception de Toyota, et Benz a un dessin de conception de Benz, et il est difficile de les rassembler dans une classe de voiture et de créer une voiture de Benz ou de Toyota à partir de là. Par exemple, dans le cas de la Prius de Toyota, l'apparence est la même, mais les instances sont différentes en termes de kilométrage et de quantité restante d'essence, et même si elles ont la même apparence (même classe, même type), les caractéristiques sont différentes pour chaque instance. C'est la différence pour chaque instance.

C'était ça. Je pensais que c'était vrai cette fois

En abordant ces trois, il est plus avancé que l'article précédent Visez à expliquer les ** classes ** et ** instances **

Héritage de classe

Les classes ont l'idée de l'héritage de classe. Si vous réécrivez la pièce de classe dans un dessin de conception, il devient "** héritage du dessin de conception **". En prenant l’article précédent comme exemple, si vous créez un dessin de conception [Car2](classe Car2) qui hérite du dessin de conception [Car](classe Car), [Car2] Le dessin de conception est

Les deux peuvent être utilisés.

Par exemple, si le dessin de conception [Car2] ci-dessus (classe Car2) est utilisé comme dessin de conception [Nissan](classe de voiture Nissan), ** La classe de voiture Nissan est automatiquement héritée par l'idée d'héritage sans écrire le contenu défini dans Voiture dans la classe (dessin de conception) **

Cette fois, nous la définirons à l'avance.

Est créé pour que la classe NissanCar_serena hérite de la classe Car. *** Nous partirons du principe qu'il est communément admis que la voiture peut rouler au sol avec un véhicule à quatre roues **.


alt


Créons un dessin de conception (classe)

Classe de voiture

Car.java


class Car {
    static Boolean isHaving4tires = true; ///① Absolument, la voiture a quatre pneus

    static Boolean canDriveOnGround = true; ///② La voiture fonctionnera certainement au sol

    String name; ///③ Chaque instance a un nom différent

    String color; ///④ Chaque instance a une couleur différente

    Boolean isHavingWindow; ///⑤ Chaque instance peut avoir ou non une fenêtre.

    public void setNameAndColor(String n, String c) { 
        this.name = n;  ///⑥ Je vais définir le nom et la couleur de l'instance
        this.color = c;
    }

    public void checkWindow(Boolean b) { 
        this.isHavingWindow = b  ///⑦ Je vais définir si l'instance a une fenêtre ou non
    }
}

Contenu de la définition de la classe de voiture (dessin de conception de voiture)

① J'ai créé une variable de type booléen qui a 4 pneus et j'ai décidé que c'était absolument vrai. (2) J'ai créé une variable de type booléen qui peut s'exécuter sur le terrain, et j'ai décidé que c'était absolument vrai. (3) Le nom qui peut être modifié pour chaque instance est défini par une variable de type String. (4) La couleur qui peut changer pour chaque instance est définie par une variable de type String. (5) L'information «s'il y a une fenêtre ou non» qui peut changer pour chaque instance est définie par une variable de type booléen. (6) Une méthode pour définir le nom et la couleur de chaque instance a été définie. (7) Nous avons défini une méthode pour définir les informations "s'il y a une fenêtre" pour chaque instance.

Classe NissanCar_serena

Car.java


class NissanCar extends Car {
    
    static String whichMadeByCompany = "Nissan"; ///①絶対にNissanで作成された車です

    String whereBought; ///(2) Il contient des informations sur «l'endroit où il a été acheté» qui peuvent être différentes pour chaque instance.
    
    public void setWhereBought(String w) { 
        this.whereBought = w;  ///③ Définissez l'instance où il a été acheté.
    }
}

Contenu de la définition de la classe NissanCar_serena (dessin de conception NissanCar_serena)

(1) Défini où il a été créé avec une variable de type String et déterminé qu'il s'agit absolument de Nissan. (2) Les informations «où a été acheté» qui peuvent changer pour chaque instance sont définies par une variable de type String. (3) Une méthode pour définir le nom et la couleur de chaque instance a été définie.

Ceci termine la création du dessin de conception (classe).

Variable de classe

En utilisant le dessin de conception ci-dessus (classe), je vais expliquer ce que l'on appelle une variable de classe. Qu'est-ce qu'une variable de classe?

est

Par conséquent, les variables de classe référencées dans la classe ci-dessus (dessin de conception) sont

En classe de voiture

--static Boolean isHaving4tires = true; --static Boolean canDriveOnGround = true; (L'exécution au sol signifie différentes instances mais aucun changement)

Dans la classe NissanCar_serena

--static String whichMadeByCompany = "Nissan"; (La société qui l'a créée ne change pas même si l'instance est différente)

Si vous souhaitez obtenir des informations sur les variables de classe

Nom de classe. Nom de variable de classe Vous pouvez obtenir la valeur de la variable de classe en faisant.

Obtenons la valeur de la variable de classe en utilisant la classe ci-dessus (1) Je veux obtenir la valeur de la variable de classe ʻisHaving4tires` dans la classe Car.

Car.isHaving4tires //true NissanCar_serena.isHaving4tires // true → NissanCar_serena est la destination d'héritage de la classe Car

(2) Je veux obtenir la valeur de la variable de classe whichMadeByCompany dans la classe NissanCar_serena.

NissanCar_serena.whichMadeByCompany //" Nissan "

Variable d'instance

Qu'est-ce qu'une variable d'instance?

est. Par conséquent, la variable d'instance mentionnée dans la classe ci-dessus (dessin de conception) est

En classe de voiture

--Nom de chaîne; (ont des noms différents pour chaque instance)

Dans la classe NissanCar_serena

--String whereBought; (Les informations sur l'endroit où l'achat a été effectué peuvent différer pour chaque instance)

Si vous souhaitez obtenir des informations sur les variables d'instance

ʻInstance.nom de la variable`

Obtenons la valeur de la variable d'instance en utilisant la classe ci-dessus

(1) Créez une instance de la classe Car et de la classe NissanCar_serena, définissez le nom et la couleur (voiture de Mike, rouge), et récupérez les variables d'instance name, color.

test.java


  
   void test() {
   
   Car myCar = new Car();
   myCar.setNameAndColor("La voiture de Mike","rouge");
   System.out.print(myCar.name); //Accédez à l'instance myCar avec le nom de la variable d'instance"La voiture de Mike"Avoir
   System.out.print(myCar.color); //Accédez à l'instance myCar avec la variable d'instance color"rouge"Avoir

   NissanCar_serena myCar2 = new NissanCar_serena();
   myCar2.setNameAndColor("La voiture de Mike","rouge");
   System.out.print(myCar2.name);//Accéder à l'instance myCar2 avec le nom de la variable d'instance"La voiture de Mike"Avoir
   System.out.print(myCar2.color);//Accédez à l'instance myCar2 avec la variable d'instance color"rouge"Avoir

  }
}

(2) Créez une instance de la classe NissanCar_serena, définissez les informations sur l'endroit où vous l'avez achetée et obtenez la variable d'instance whereBought.

test.java


  
   void test2() {

   NissanCar_serena myCar2 = new NissanCar_serena();
   myCar2.setWhereBought("Tokyo");
   System.out.print(myCar2.whereBought);//Accédez à l'instance myCar2 avec la variable d'instance wherebought"Tokyo"Avoir
  }
}

finalement

En écrivant cet article, j'ai été frappé par la ** variable d'instance de la classe héritée NissanCar_serena **.

Comme expliqué ci-dessus

** Les variables d'instance sont différentes pour chaque instance ** ** Les variables de classe sont différentes pour chaque classe **

est.

Quand j'ai essayé de définir une variable d'instance, quand j'ai imaginé la différence entre les instances de la classe NissanCar_serena, qui n'est pas en voiture, NissanCar est une voiture commerciale appelée Nissan, tandis que la classe Car est toujours commerciale ou non. Puisqu'il est inconnu, utilisez la différence pour définir où il a été acheté,

public String whereBought = "";

A été défini. La possibilité est très petite, mais il est possible que les gens qui construisent une voiture à partir de zéro et l'utilisent pour eux-mêmes (rires) Cependant, si vous avez une classe en tant que dessin de conception et que l'on vous demande si vous devez définir les informations «où elle a été achetée» comme variable, vous ne pouvez rien dire. .. ..

Également défini dans la classe Car

public Boolean isHavingWindow;

Concernant la variable d'instance, j'aimerais que vous imaginiez l'image suivante.

alt

Merci pour la navigation. Je vous serais reconnaissant si vous pouviez commenter si vous en avez.

Recommended Posts

À propos des classes et des instances (évolution)
À propos des classes et des instances
Prise en compte des classes et des instances
À propos des classes et des instances Ruby
Classes et instances Ruby
java (classe et instance)
Premiers pas avec Java_Chapter 8_A propos des "Instances" et des "Classes"
Création de classes et d'instances Ruby
Différences entre les classes et les instances dans Ruby
Organiser les classes, les instances et les variables d'instance
Classes et instances Java pour les débutants
Programmation Java (classes et instances, méthodes principales)
À propos de la classe standard
Écrire du code à l'aide de classes et d'instances Ruby
classe java, instance, objet
Classes HashMap et HashSet
Littéraux de chaîne et instances
À propos de Bean et DI
[Java] À propos des classes anonymes
À propos de gets et gets.chomp
À propos de la redirection et du transfert
À propos de l'encapsulation et de l'héritage
Liste et cours heureux
À propos de Serializable et serialVersionUID
Classes et instances Java comprises dans la figure
[Pour les débutants] Explication des classes, des instances et des statiques en Java
À propos de l'instruction et de l'instruction if
[Java] Classe générique et méthode générique
À propos des hachages et symboles Ruby
[Java] À propos de String et StringBuilder
À peu près la même et la même valeur
À propos de la méthode Pluck et de la méthode ID
À propos du package Java et de l'importation
À propos de Ruby, modèle objet
[Ruby] Méthodes singulières et classes singulières
À propos de la classe abstraite Java
Méthodes et classes Ruby (basiques)
À propos des variables d'instance et attr_ *
Méthodes et classes abstraites Java
À propos des méthodes Java statiques et non statiques
En savoir plus sur les gemmes et les bundlers
À propos des méthodes equals () et hashcode ()
[Java débutant] À propos de l'abstraction et de l'interface
À propos des guillemets simples et doubles Ruby
[Ruby] Classes, variables d'instance, instances, etc ...
À propos de la phase de paramétrage et de la phase d'exécution de Gradle
Comment appeler des classes et des méthodes
À propos de l'opérateur de produit Ruby (&) et de l'opérateur somme (|)
À propos de removeAll et de retentionAll de ArrayList
Java Generics (définit les classes et les méthodes)
Traitement des relevés et des succursales
À propos de l'héritage orienté objet et du rendement Ruby
A propos des types primitifs et des types de référence Java
Considération sur les rails et l'architecture propre