Class and Object
Il existe de nombreux langages de programmation et presque autant de styles de programmation (parfois appelés paradigmes). Les programmes que nous avons écrits jusqu'à présent sont principalement procéduraux, car l'accent a été mis sur la spécification de procédures de calcul. La plupart des programmes Java sont orientés objet, ce qui signifie que l'attention est portée sur les objets et leurs interactions. Voici quelques-unes des caractéristiques de la programmation orientée objet :
Les objets représentent souvent les entités du monde réel. La majorité des méthodes sont des méthodes d'objet (comme les méthodes que vous invoquez sur les String
) plutôt que des méthodes de classe (comme les méthodes Math
). Les méthodes que nous avons écrites jusqu'à présent ont été des méthodes de classe. Dans ce chapitre, nous allons écrire quelques méthodes d'objet.
Les objets sont isolés les uns des autres en limitant les modes d'interaction, en particulier en empêchant l'accès aux variables d'instance sans invoquer de méthodes. Les classes sont organisées en arbres généalogiques où de nouvelles classes étendent des classes existantes, en ajoutant de nouvelles méthodes et en remplaçant d'autres.
En Java, chaque classe étend une autre classe, sauf la classe Object
. La classe la plus de base est la classe Object
. Elle ne contient aucune variable d'instance, mais elle fournit les méthodes equals
et toString
, entre autres.
De nombreuses classes étendent Object
, y compris presque toutes les classes que nous avons écrites et de nombreux types Java comme Integer
, Double
, String
, les tableaux (array), etc. Toute classe qui ne nomme pas explicitement une classe parente étend Object
par défaut. L'« arbre généalogique » des classes est appelé hiérarchie de classes. Object
apparaît généralement en haut, avec toutes les classes filles en dessous.
Les classes et les objets ont généralement des attributs qui sont utilisés pour décrire ces classes/objets, et les méthodes sont utilisées pour effectuer des fonctions spécifiques. Voici un exemple pour vous montrer à quoi ressemble une classe. Enregistrez le code dans objectTest.java
et utilisez la ligne de commande pour exécuter le code.
Exemple :
Écrivez le code suivant dans le fichier /home/labex/project/objectTest.java
:
// use keyword 'class' to create a new class named Person
class Person
{
/*
* there are four properties,
* name of string type, age of int type
* gender of string type, weight of float type
*/
private String name;
private int age;
private String gender;
private float weight;
// this is a constructor with no return type, the same name as the class, no parameters
public Person(){
}
//this is a constructor with two parameters
public Person(String name, int age){
// use parameters to set object's name and age
this.name = name;
this.age = age;
}
// this is a constructor with four parameters
public Person(String name, int age, String gender, float weight){
// use parameters to set object's name, age, gender and weight
this.name = name;
this.age = age;
this.gender = gender;
this.weight = weight;
}
// this is an object method
public void personInfo(){
System.out.println("Name: " + this.name + "\nAge: "+ this.age + "\nGender: " + this.gender + "\nWeight: "+this.weight);
}
}
public class objectTest{
public static void main(String[] args){
// use 'new' to create an instance of class Person
Person p = new Person("aaa",18,"male",50.5f); // p refers to an object
/* you can try these two different construction methods, and see what the output is.
* Person p = new Person();
* Person p = new Person("aaa",18);
*/
// use object to invoke method personInfo()
p.personInfo();
}
}
Sortie :
Exécutez le fichier objectTest.java
en utilisant les commandes suivantes :
javac /home/labex/project/objectTest.java
java objectTest
Voyez la sortie :
Name: aaa
Age: 18
Gender: male
Weight: 50.5
Il y a quatre attributs dans la classe Person
. Tous les attributs sont privés, donc ils ne peuvent pas être accédés depuis l'extérieur (ils ne peuvent être utilisés que dans la classe). Il y a une méthode d'objet nommée personInfo
utilisée pour afficher les informations personnelles et il y a trois constructeurs ayant le même nom que la classe Person
. La seule différence entre eux est leur paramètres. Ce comportement est appelé surcharge (overloading).