Menu
Coddy logo textTech

La classe Object

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy. Leçon 24 sur 87.

En Java, chaque classe que vous créez hérite automatiquement d'une classe spéciale appelée Object. Même si vous n'écrivez extends nulle part, votre classe est toujours une enfant de Object. Cela fait de Object la racine de toute la hiérarchie des classes.

public class Person {
    // Ceci étend implicitement Object
}

// Est équivalent à :
public class Person extends Object {
}

Parce que chaque classe hérite de Object, chaque objet en Java a accès à plusieurs méthodes intégrées. Les plus couramment utilisées incluent :

MéthodeObjectif
toString()Retourne une représentation sous forme de chaîne de caractères de l'objet
equals(Object obj)Compare deux objets pour vérifier leur égalité
hashCode()Retourne une valeur de code de hachage pour l'objet
getClass()Retourne la classe d'exécution de l'objet

Par défaut, ces méthodes ont des implémentations génériques. Par exemple, toString() retourne le nom de la classe suivi de @ et du code de hachage de l'objet en hexadécimal, ce qui n'est pas très utile :

Person p = new Person();
System.out.println(p.toString());  // Sortie : Person@1a2b3c4d

C'est pourquoi vous surchargerez souvent ces méthodes dans vos propres classes pour fournir un comportement significatif. Comprendre que Object est le parent universel aide à expliquer pourquoi vous pouvez stocker n'importe quel objet dans une variable Object et pourquoi certaines méthodes sont disponibles sur chaque objet que vous créez.

challenge icon

Défi

Facile

Explorons comment la classe Object sert de parent universel de toutes les classes Java en construisant un système simple d’inventaire de gadgets qui démontre les méthodes héritées de Object.

Vous allez créer trois fichiers pour organiser votre code :

  • Gadget.java : créez une classe représentant un gadget électronique. Votre classe doit avoir :
    • Des champs privés pour name (String) et year (int)
    • Un constructeur qui initialise les deux champs
    • Les méthodes getter getName() et getYear()
    Ne redéfinissez aucune méthode de Object : nous voulons d’abord observer le comportement par défaut.
  • Smartphone.java : créez une sous-classe qui étend Gadget et ajoute des fonctionnalités propres aux smartphones :
    • Un champ privé pour brand (String)
    • Un constructeur qui accepte name, year et brand — utilisez super(name, year) pour la partie du parent
    • Une méthode getBrand() qui renvoie la marque
    • Redéfinissez la méthode toString() pour renvoyer : Smartphone: [brand] [name] ([year])
  • Main.java : montrez la différence entre les méthodes Object par défaut et redéfinies. Vous recevrez trois entrées : un nom de gadget, une année et une marque. Créez à la fois un Gadget et un Smartphone en utilisant le même nom et la même année (ainsi que la marque pour le smartphone), puis :
    • Affichez le nom de la classe du gadget à l’aide de getClass().getSimpleName()
    • Affichez si le toString() par défaut du gadget contient le symbole « @ » (affichez true ou false)
    • Affichez le smartphone à l’aide de son toString() redéfini

Vous recevrez trois entrées : le nom du gadget/smartphone (String), l’année (int) et la marque (String).

Ce défi montre pourquoi il est important de redéfinir les méthodes de Object : le toString() par défaut vous donne quelque chose comme Gadget@1a2b3c, tandis que votre version personnalisée fournit des informations pertinentes !

Essayez vous-même

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Lire les entrées
        String name = scanner.nextLine();
        int year = scanner.nextInt();
        scanner.nextLine(); // consommer le saut de ligne
        String brand = scanner.nextLine();
        
        // TODO: Créer un objet Gadget avec name et year
        
        // TODO: Créer un objet Smartphone avec name, year, et brand
        
        // TODO: Afficher le nom de la classe du gadget en utilisant getClass().getSimpleName()
        
        // TODO: Afficher si le toString() du gadget contient "@" (true ou false)
        
        // TODO: Afficher le smartphone (utilise le toString() redéfini)
        
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur Java en ligne