Objets et classes Java


Java comme langage orienté objet. Prend en charge les concepts de base suivants :

  • Polymorphe

  • Hériter

  • Forfait

  • Résumé

  • Classe

  • Objet

  • Exemple

  • Méthode

  • Surcharge

Dans cette section, nous nous concentrons sur les concepts d'objets et de classes.

  • Objet : L'objet est une instance d'une classe (L'objet n'est pas Trouver une petite amie), a un état et un comportement. Par exemple, un chien est un objet. Son statut comprend : sa couleur, son nom et sa race ; ses comportements incluent : remuer la queue, aboyer, manger, etc.

  • Classe  : Une classe est un modèle qui décrit le comportement et l'état d'une classe d'objets.

Dans l'image ci-dessous, les garçons et les filles sont des classes, et chaque personne spécifique est un objet de la classe :

object-class.jpg


Objets en Java


Comprenons maintenant en profondeur ce qu'est un objet. Si vous regardez le monde réel qui vous entoure, vous constaterez qu'il y a de nombreux objets autour de vous, comme des voitures, des chiens, des personnes, etc. Tous ces objets ont leur propre état et comportement.

Prenons l'exemple d'un chien. Son statut comprend : son nom, sa race et sa couleur. Ses comportements incluent : aboyer, remuer la queue et courir.

Comparez les objets réels et les objets logiciels, ils sont très similaires.

Les objets logiciels ont également un état et un comportement. L'état d'un objet logiciel est son attribut et son comportement se reflète à travers les méthodes.

Dans le développement de logiciels, les méthodes opèrent sur les changements dans l'état interne des objets, et les appels mutuels entre les objets sont également effectués via des méthodes.

Classes en Java

Les classes peuvent être considérées comme des modèles pour créer des objets Java.

Comprendre la définition d'une classe en Java à travers la classe simple suivante :

public class Dog{
   String breed;
   int age;
   String color;
   void barking(){
   }
   
   void hungry(){
   }
   
   void sleeping(){
   }
}

Une classe peut contenir les variables de type suivantes :

  • Variables locales : Les variables définies dans les méthodes, les constructeurs ou les blocs d'instructions sont appelées variables locales. La déclaration et l'initialisation des variables sont toutes dans les méthodes. Une fois la méthode terminée, les variables seront automatiquement détruites.

  • Variables membres  : Les variables membres sont des variables définies dans la classe et en dehors du corps de la méthode. Ces variables sont instanciées lors de la création de l'objet. Les variables membres sont accessibles par les méthodes, les constructeurs et les blocs d'instructions d'une classe spécifique.

  • Variable de classe  : Les variables de classe sont également déclarées dans la classe, en dehors du corps de la méthode, mais doivent être déclarées comme type statique.

Une classe peut avoir plusieurs méthodes : barking(), faim() et sleep() sont toutes des méthodes de la classe Dog.


Méthode constructeur

Chaque classe a une méthode constructeur. Si aucun constructeur n'est explicitement défini pour une classe, le compilateur Java fournira un constructeur par défaut pour la classe.

Lors de la création d'un objet, au moins un constructeur doit être appelé. Le nom du constructeur doit être le même que celui de la classe. Une classe peut avoir plusieurs constructeurs.

Ce qui suit est un exemple de méthode constructeur :

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // 这个构造器仅有一个参数:name
   }
}

Création d'objets

Les objets sont créés à partir de classes. En Java, utilisez le mot-clé new pour créer un nouvel objet. La création d'un objet nécessite les trois étapes suivantes :

  • Déclaration : Déclarez un objet, y compris le nom de l'objet et le type d'objet.

  • Instanciation : Utilisez le mot-clé new pour créer un objet.

  • Initialisation : Lors de l'utilisation de new pour créer un objet, la méthode constructeur est appelée pour initialiser l'objet.

Ce qui suit est un exemple de création d'un objet :

public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }
   public static void main(String []args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Compilez et exécutez le programme ci-dessus, les résultats suivants seront imprimés :

Passed Name is :tommy

Accéder aux variables et méthodes d'instance

Accéder aux variables membres et aux méthodes membres via l'objet créé, comme indiqué ci-dessous :

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问其中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

Instance

L'exemple suivant montre Comment accéder aux variables d'instance et appeler les méthodes membres :

public class Puppy{
   int puppyAge;
   public Puppy(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("Passed Name is :" + name ); 
   }

   public void setAge( int age ){
       puppyAge = age;
   }

   public int getAge( ){
       System.out.println("Puppy's age is :" + puppyAge ); 
       return puppyAge;
   }

   public static void main(String []args){
      /* 创建对象 */
      Puppy myPuppy = new Puppy( "tommy" );
      /* 通过方法来设定age */
      myPuppy.setAge( 2 );
      /* 调用另一个方法获取age */
      myPuppy.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge ); 
   }
}

Compilez et exécutez le programme ci-dessus, produisant les résultats suivants :

Passed Name is :tommy
Puppy's age is :2
Variable Value :2

Les règles de déclaration du fichier source

sont dans cette section Dans la dernière partie, nous examinerons les règles de déclaration des fichiers sources. Portez une attention particulière à ces règles lors de la définition de plusieurs classes dans un fichier source et lorsqu'il existe des instructions d'importation et des instructions de package.

  • Il ne peut y avoir qu'une seule classe publique

  • dans un fichier source Un fichier source peut avoir plusieurs classes non publiques

  • Le nom du fichier source doit être cohérent avec le nom de la classe publique. Par exemple : le nom de la classe publique dans le fichier source est Employee, alors le fichier source doit être nommé Employee.java.

  • Si une classe est définie dans un package, l'instruction package doit figurer sur la première ligne du fichier source.

  • Si le fichier source contient une instruction d'importation, elle doit être placée entre l'instruction du package et la définition de classe. S'il n'y a pas d'instruction package, l'instruction import doit figurer en premier dans le fichier source.

  • L'instruction import et l'instruction package sont valides pour toutes les classes définies dans le fichier source. Dans le même fichier source, différentes déclarations de package ne peuvent pas être données à différentes classes.

Les cours ont plusieurs niveaux d'accès, et les cours sont également divisés en différents types : cours abstraits, cours finaux, etc. Ceux-ci seront introduits dans le chapitre sur le contrôle d’accès.

En plus des types mentionnés ci-dessus, Java possède également des classes spéciales, telles que des classes internes et des classes anonymes.


Package Java

Le package est principalement utilisé pour classer les classes et les interfaces. Lors du développement de programmes Java, vous pouvez écrire des centaines ou des milliers de classes, il est donc nécessaire de classer les classes et les interfaces.

Instruction d'importation

En Java, si un nom qualifié complet est donné, incluant le nom du package et le nom de la classe, le compilateur Java peut facilement localiser le code source ou la classe. L'instruction Import est utilisée pour fournir un chemin raisonnable afin que le compilateur puisse trouver une certaine classe.

Par exemple, la ligne de commande suivante demandera au compilateur de charger toutes les classes dans le chemin java_installation/java/io

import java.io.*;

Un exemple simple

Dans ce Dans l'exemple, nous créons deux classes : Employee et EmployeeTest.

Ouvrez d’abord l’éditeur de texte et collez-y le code suivant. Notez que le fichier est enregistré sous Employee.java.

La classe Employé comporte quatre variables membres : nom, âge, désignation et salaire. La classe déclare explicitement une méthode constructeur avec un seul paramètre.

import java.io.*;
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 类的构造器
   public Employee(String name){
      this.name = name;
   }
   // 设置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 设置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 设置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

Le programme démarre l'exécution à partir de la méthode principale. Pour exécuter ce programme, la méthode principale doit être incluse et un objet instance doit être créé.

La classe EmployeeTest est donnée ci-dessous, qui instancie deux instances de la classe Employee et appelle des méthodes pour définir les valeurs des variables.

Enregistrez le code suivant dans le fichier EmployeeTest.java.

import java.io.*;
public class EmployeeTest{

   public static void main(String args[]){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

Compilez ces deux fichiers et exécutez la classe EmployeeTest. Vous pouvez voir les résultats suivants :

C :> javac Employee.java
C :> vi EmployeeTest.java
C :> javac  EmployeeTest.java
C :> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0
.