Maison > Java > javaDidacticiel > le corps du texte

Constructeur de tutoriel de base Java et surcharge de méthodes

高洛峰
Libérer: 2017-01-19 14:41:49
original
1703 Les gens l'ont consulté

Dans les méthodes et les données membres, nous avons mentionné que les objets en Java sont initialisés lors de leur création. Lors de l'initialisation, les données membres de l'objet se voient attribuer des valeurs initiales. Nous pouvons l'initialiser explicitement. Si nous n'attribuons pas de valeur initiale au membre de données, le membre de données prendra une valeur initiale par défaut en fonction de son type.

L'initialisation explicite nous oblige à déterminer la valeur initiale lors de l'écriture du programme, ce qui est parfois très gênant. Nous pouvons utiliser un constructeur pour initialiser des objets. Les constructeurs peuvent initialiser les données membres et spécifier des opérations spécifiques. Ces opérations sont effectuées automatiquement lors de la création de l'objet.

Définir le constructeur

Un constructeur est une méthode. Comme les méthodes normales, nous définissons des constructeurs dans la classe. Le constructeur a les caractéristiques de base suivantes :

1. Le nom du constructeur est le même que le nom de la classe
2 Le constructeur n'a pas de valeur de retour

Nous définissons le. constructeur de la classe Humain :

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

public class Test

{

public static void main(String[] args)

{

Humain aPerson = new Human(160);

System.out .println(aPerson.getHeight());

}

}

classe Humain

{

/**

   * constructeur

   */

Humain(int h)

{

this.height = h;

System.out.println("Je suis né");

}

/**

   * accesseur

   */

int getHeight ()

{

return this.height;

}

int hauteur;

}

Le programme ci-dessus imprimera

I'm born
160
Copier après la connexion

Le constructeur peut recevoir une liste de paramètres comme une méthode normale . Ici, le constructeur Human() reçoit un entier en paramètre. Dans le corps de la méthode, nous attribuons le paramètre entier à la hauteur du membre de données. Les constructeurs font deux choses lorsqu'un objet est créé :

Les constructeurs peuvent recevoir une liste de paramètres comme une méthode normale. Ici, le constructeur Human() reçoit un entier en paramètre. Dans le corps de la méthode, nous attribuons le paramètre entier à la hauteur du membre de données. Le constructeur fait deux choses lorsque l'objet est créé :

1. Fournit une valeur initiale pour le membre de données this.height = h
2. Effectue des opérations initiales spécifiques. 'm born");

De cette façon, nous pouvons définir de manière flexible la valeur initiale lors de l'appel du constructeur sans être aussi contraint que l'initialisation de l'affichage.

Comment s'appelle le constructeur ? Lorsque nous créons des classes, nous utilisons tous new Human(). En fait, nous appelons le constructeur de la classe Human. Lorsque nous ne définissons pas cette méthode, Java fournira un constructeur vide à appeler lors de l'utilisation de new. Mais lorsque nous définissons un constructeur, Java appellera le constructeur défini lors de la création d'un objet. Lors de l'appel, nous fournissons un paramètre de 160. Vous pouvez également voir dans les résultats finaux d'exécution que la hauteur de l'objet est bien initialisée à 160.

Priorité de la méthode d'initialisation

Dans les méthodes et les données membres, nous pouvons voir que si nous fournissons une valeur initiale explicite, alors le membre de données adoptera une valeur initiale explicite au lieu de la valeur initiale par défaut. Mais si nous fournissons tous les deux une valeur initiale explicite et initialisons le même membre de données dans le constructeur, la valeur initiale finale sera déterminée par le constructeur. Par exemple, dans l'exemple suivant :

public class Test
{
  public static void main(String[] args)
  {
    Human aPerson = new Human(160);
    System.out.println(aPerson.getHeight());
  }
 
}
 
class Human
{
  /**
   * constructor
   */
  Human(int h)
  {
    this.height = h; 
  }
 
  /**
   * accessor
   */
  int getHeight()
  {
    return this.height;
  }
 
  int height=170; // explicit initialization
}
Copier après la connexion

Le résultat d'exécution est :

160
Copier après la connexion

La valeur d'initialisation finale de l'objet est cohérente avec la valeur dans la méthode de construction. Par conséquent :


Méthode de construction> Valeur initiale explicite> Valeur initiale par défaut

(En fait, la soi-disant priorité est liée à l'ordre d'exécution lors de l'initialisation Connexes, j'y reviendrai en profondeur plus tard)

Surcharge de méthode

Plusieurs constructeurs peuvent être définis dans une classe, tels que :

public class Test
{
  public static void main(String[] args)
  {
    Human neZha  = new Human(150, "shit");
    System.out.println(neZha.getHeight()); 
  }
 
}
 
class Human
{
  /**
   * constructor 1
   */
  Human(int h)
  {
    this.height = h;
    System.out.println("I'm born");
  }
 
  /**
   * constructor 2
   */
  Human(int h, String s)
  {
    this.height = h;
    System.out.println("Ne Zha: I'm born, " + s);
  }
 
  /**
   * accessor
   */
  int getHeight()
  {
    return this.height;
  }
 
  int height;
}
Copier après la connexion

Exécuter le résultat :

Ne Zha: I'm born, shit
150
Copier après la connexion

Deux constructeurs sont définis ci-dessus, tous deux nommés Humain. Les deux constructeurs ont des listes de paramètres différentes.

Lors de l'utilisation de new pour créer un objet, Java décidera quel constructeur construire en fonction des paramètres fournis. Par exemple, lors de la construction de neZha, nous fournissons deux paramètres : l'entier 150 et la chaîne "shit", qui correspond à la liste des paramètres de la deuxième méthode de build, donc Java appellera la deuxième méthode de build.

En Java, Java déterminera la méthode à appeler en fonction à la fois du nom de la méthode et de la liste des paramètres. C'est ce qu'on appelle la surcharge de méthode. La méthode build peut être surchargée, et les méthodes ordinaires peuvent également être surchargées. Par exemple, la méthode Breath() ci-dessous :

public class Test
{
  public static void main(String[] args)
  {
    Human aPerson = new Human();
    aPerson.breath(10);
  }
 
}
 
class Human
{
  /**
    * breath() 1
    */
  void breath()
  {
    System.out.println("hu...hu...");
  }
 
 
  /**
  * breath() 2
  */
  void breath(int rep)
  {
    int i;
    for(i = 0; i < rep; i++) {
      System.out.println("lu...lu...");
    }
  }
 
  int height;
}
Copier après la connexion

Résultats en cours d'exécution :

lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
Copier après la connexion

Vous pouvez le voir. en raison de l'invocation, un paramètre est fourni : l'entier 10, donc la deuxième méthode Breath() dont la liste de paramètres lui correspond est appelée.

Résumé

Fonctionnalités du constructeur : même nom que la classe, aucune valeur de retour
Objectif du constructeur : initialisation, opération initiale
Surcharge de méthode : liste des paramètres du nom de la méthode-> Quelle méthode est réellement appelée

Plus Pour les articles liés au didacticiel de base Java sur les constructeurs et la surcharge de méthodes, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!