[Notions de base Java] Qu'est-ce que la classe?

introduction

Cet article s'intitule [Easy Java](https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%84Java-%E7%AC % AC7% E7% 89% 88-% E3% 80% 8C% E3% 82% 84% E3% 81% 95% E3% 81% 97% E3% 81% 84% E3% 80% 8D% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-% E9% AB% 98% E6% A9% 8B-% E9% BA% BB% E5% A5% 88 / dp / 4815600848) Je l'ai écrit dans le but d'organiser les connaissances que j'ai apprises par moi-même dans le livre de référence.

Quelle est la classe

Un résumé des états, propriétés et fonctions liés aux choses en général

--field: Un mécanisme pour représenter "l'état / la propriété" d'une classe --method: Un mécanisme pour représenter la "fonction" d'une classe --membre: champ, méthode ... etc

Déclaration de classe

La classe est déclarée comme suit:

python


nom de classe de classe
{
Nom du type Nom du champ;
・ ・ ・
Type de retour Nom de la méthode(Liste d'arguments)
    {
Phrase;
・ ・ ・
expression de retour;
    }
・ ・ ・
}

Utilisation de la classe

Le simple fait de déclarer une classe ne vous dit pas en détail de quoi il s'agit. Par conséquent, il est nécessaire de créer un objet.

A titre d'exemple, remplaçons-le par "voiture".

python


//Classe de voiture
class Car
{
    //champ
    int num; //Numéro d'immatriculation
    double gas; //Quantité d'essence
}

Au stade ci-dessus, vous pouvez voir que la chose "voiture" a "numéro" et "quantité d'essence". Après cela, en fonction de la classe déclarée, écrivez simplement le code que vous souhaitez créer pour une voiture.

―― De cette façon, chaque voiture créée sur le code est appelée objet / instance.

python


//Créer un objet de classe de voiture
class Sample1
{
    public static void main(String[] args)
    {
        Car car1 = new Car();

        car1.num = 1234;
        car1.gas = 20.5;

        System.out.println("Le numéro de voiture est" + car1.num + "est.");
        System.out.println("La quantité d'essence" + car1.gas + "est.");
    }
}

** Pour utiliser une classe, déclarez la classe et créez un objet. ** **

Constructor En plus des champs et des méthodes, vous pouvez écrire des constructeurs dans des classes.

Les constructeurs sont très similaires aux méthodes, mais

Il y a une différence.

python


class Car
{
	private int num;
	private double gas;

	// constructor
	public Car()
	{
		num = 0;
		gas = 0.0;
		System.out.println("J'ai fait une voiture.");
	}

	public void show()
	{
		System.out.println("Le numéro de voiture est" + num + "est.");
		System.out.println("La quantité d'essence" + gas + "est.");
	}
}

class Sample
{
	public static void main(String[] args)
	{
		Car car1 = new Car();
		car1.show();
	}
}

Ci-dessous, résultat de l'exécution

python


J'ai fait une voiture.
Le numéro de voiture est 0.
La quantité d'essence est de 0.C'est 0.

Fonction de classe

Encapsulation

Une fonction qui rassemble des données (champs) et des fonctions (méthodes) dans une classe et attache privée aux membres que vous souhaitez protéger afin qu'ils ne soient pas accessibles sans autorisation.

Exemple) Champ → membre privé, méthode → membre public

Cela vous permet de créer des programmes sans erreur.

--public: accessible depuis l'extérieur de la classe --private: inaccessible depuis l'extérieur de la classe --Neither (omis): accessible depuis la classe incluse dans le "même package"

Surcharge

Même au sein d'une même classe, il est possible de définir des méthodes avec le même nom de méthode mais des types d'arguments et des nombres différents.

python


class Car
{
	private int num;
	private double gas;

	public void setCar(int n)
	{
		num = n;
		System.out.println("Nombre" + num + "Je l'ai fait.");
	}

	public void setCar(double g)
	{
		gas = g;
		System.out.println("La quantité d'essence" + gas + "Je l'ai fait.");
	}

	public void setCar(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("Nombre" + num + "Quantité d'essence" + gas + "Je l'ai fait.");
	}

	public void show()
	{
		System.out.println("Le numéro de voiture est" + num + "est.");
		System.out.println("La quantité d'essence" + gas + "est.");
	}
}

class Sample
{
	public static void main(String[] args)
	{
		Car car1 = new Car();
		car1.setCar(1234, 20.5);
		car1.show();

		System.out.println("Changez uniquement le numéro de voiture.");
		car1.setCar(2345);
		car1.show();

		System.out.println("Changez uniquement la quantité d'essence.");
		car1.setCar(30.5);
		car1.show();
	}
}

Le résultat de sortie est le suivant.

python


Nombre 1234 et quantité d'essence 20.Je l'ai mis à 5.
Le numéro de voiture est le 1234.
20 essence.Il est 5.
Changez uniquement le numéro de voiture.
J'ai changé le nombre en 2345.
Le numéro de voiture est le 2345.
20 essence.Il est 5.
Changez uniquement la quantité d'essence.
30 essence.Je l'ai mis à 5.
Le numéro de voiture est le 2345.
La quantité d'essence est de 30.Il est 5.

Le code ci-dessus appelle trois types de méthodes setCar ().

C'est très pratique car vous pouvez utiliser le même nom de méthode pour un traitement similaire. * Cependant, notez que la surcharge n'est possible que si les types d'arguments ou les nombres sont différents! </ font>

Héritage

En Java, vous pouvez créer une nouvelle classe basée sur la classe que vous avez déjà créée.

  • La création d'une nouvelle classe est appelée extend.

En prenant une voiture comme exemple, cela ressemble à ceci:

python


voiture de classe
{
nombre;
Quantité d'essence;
Fonction pour afficher le nombre et la quantité d'essence
}

voiture de course de classe étend la voiture
{
Cours de compétition;
Fonction d'affichage du parcours de compétition;
}

--Super classe de la classe parent "voiture" --Sous-classe de la classe ajoutée "Racing Car"

Les sous-classes héritent des membres des superclasses.

* Remarque: les membres de plusieurs superclasses ne peuvent pas être hérités par une sous-classe. </ font>

Accès aux membres

Les membres privés des superclasses ne sont pas non plus accessibles par les sous-classes.

Par conséquent, dans la superclasse, vous pouvez spécifier protected.

--protected: accessible depuis les sous-classes ainsi que les classes appartenant au même package.

passer outre

Vous pouvez définir une méthode qui a exactement le même nom de méthode, le même nombre d'arguments et le même type que la super classe.

python


class Car
{
	protected int num;
	protected double gas;

	public Car()
	{
		num = 0;
		gas = 0.0;
		System.out.println("J'ai fait une voiture.");
	}

	public Car(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("nombre" + num + "Quantité d'essence" + gas + "Créé une voiture.");
	}

	public void setCar(int n, double g)
	{
		num = n;
		gas = g;
		System.out.println("Nombre" + num + "Quantité d'essence" + gas + "Je l'ai fait.");
	}

	public void show()
	{
		System.out.println("Le numéro de voiture est" + num + "est.");
		System.out.println("La quantité d'essence" + gas + "est.");
	}
}

class RacingCar extends Car
{
	private int course;

	public RacingCar_11()
	{
		course = 0;
		System.out.println("J'ai fabriqué une voiture de course.");
	}

	public void setCourse(int c)
	{
		course = c;
		System.out.println("Numéro du cours" + course + "Je l'ai fait.");
	}

	public void show()
	{
		System.out.println("Le numéro de la voiture de course est" + num + "est.");
		System.out.println("La quantité d'essence" + gas + "est.");
		System.out.println("Le numéro de cours est" + course + "est.");
	}
}

class Sample
{
	public static void main(String[] args)
	{
		RacingCar rccar1 = new RacingCar();
		rccar1.setCar(1234, 20.5);
		rccar1.setCourse(5);
		rccar1.newShow();
	}
}

Ci-dessous, résultat de l'exécution

python


J'ai fait une voiture.
J'ai fabriqué une voiture de course.
Nombre 1234 et quantité d'essence 20.Je l'ai mis à 5.
J'ai changé le numéro de cours en 5.
Le numéro de la voiture de course est 1234.
20 essence.Il est 5.
Le numéro du cours est 5.

Lorsque j'ai créé un objet de sous-classe et appelé la méthode show (), la méthode show () de la sous-classe a été appelée.

* Si le nom de la méthode, le nombre d'arguments et le type sont exactement les mêmes, il semble que la méthode nouvellement définie dans la sous-classe soit appelée. </ font>

final Vous pouvez éviter le remplacement en préfixant la méthode de la superclasse par final.

référence

  • [Easy Java](https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%84Java-%E7%AC%AC7% E7% 89% 88-% E3% 80% 8C% E3% 82% 84% E3% 81% 95% E3% 81% 97% E3% 81% 84% E3% 80% 8D% E3% 82% B7% E3 % 83% AA% E3% 83% BC% E3% 82% BA-% E9% AB% 98% E6% A9% 8B-% E9% BA% BB% E5% A5% 88 / dp / 4815600848)

Recommended Posts