Créer une classe
Pour créer une classe en java, il faut créer un nouveau fichier avec le nom de votre classe. par exemple person.java.
A l’intérieur,
class Person{
// votre code à l'intérieur
}Tu peux maintenant créer une instance de ta class Person:
Person person = new Person();Cette classe ne fait absolument rien. on va lui ajouter un constructeur et quelques propriétées.
class Person {
String firstName = "";
String lastName = "";
Person(firstName, lastName){ //ceci est le constructeur. Il permet de donner
this.firstName = firstName; //des valeurs aux proriétées del'instanciation
this.lastName = lastName;
}
}Maintenant pour instancier ta classe tu devras faire :
Person person = new Person("John", "Doe"); // firstName = John & lastName = DoePour ajouter une méthode :
class Person {
String firstName = "";
String lastName = "";
Person(firstName, lastName){ //ceci est le constructeur. Il permet de donner
this.firstName = firstName; //des valeurs aux proriétées del'instanciation
this.lastName = lastName;
}
public void sayYourName(){
System.out.printl("Je m'appelle "+this.firstName+" "+this.lastName);
}
}Maintenant on peut appeler cette méthode:
Person person = new Person("John", "Doe");
person.sayYourName();
// Je m'apelle John Doe;comprendre la synthaxe
Reprenons la méthode sayYourName. Devant on a écrit ‘public void’. Le terme public signifie que cette méthode peut être appelée sur une instance de la classe.
Person person = new Person("John", "Doe");
person.sayYourName();
// person est une instance de la classe Person. la methode sayYourName étant
//public je peux l'appeler sur l'instance.Tu as la possibilité de l’interdire. A ce moment là, tu remplaces public par private
// ... code de la classe
private void sayYourName(){
System.out.printl("Je m'appelle "+this.firstName+" "+this.lastName);
}Dans ce cas là tu ne pourras pas appeler la méthode sur l’instance. Lorsqu’une méthode est private elle peut être appelée uniquement à l’intérieur de la classe
class Person {
String firstName = "";
String lastName = "";
Person(firstName, lastName){ //ceci est le constructeur. Il permet de donner
this.firstName = firstName; //des valeurs aux proriétées del'instanciation
this.lastName = lastName;
}
// méthode qui peut être appelée par l'instance
public void sayYourName(){
String fullName = getfullName();
System.out.printl("Je m'appelle "+ fullName);
}
// méthode qui ne peut pas être appelée par l'instance
private String getfullName(){
return this.firstName+" "+this.lastName;
}
}
Person person = new Person("John", "Doe");
person.sayYourName(); // je peux le faire.
person.getfullName(); // X NE MARCHE PAS
// La méthode n'apparait pas dans la liste des méthodes proposées.Tu peux aussi mettre une méthode en static. Cette méthode pourras être appeler directement sur la classe sans passer par une instanciation.
class Person {
String firstName = "";
String lastName = "";
Person(firstName, lastName){ //ceci est le constructeur. Il permet de donner
this.firstName = firstName; //des valeurs aux proriétées del'instanciation
this.lastName = lastName;
}
// méthode qui peut être appelée par l'instance
public void sayYourName(){
String fullName = getfullName();
System.out.printl("Je m'appelle "+ fullName);
}
// méthode qui peut être appelé sans instancié de class
static void sayHello(){
System.out.printl("Coucou les gens");
}
}
Person.sayHello(); // Coucou les gensIMPORTANT
Si une méthode est static, elle n’a pas accès aux propriétés de la classe. Tu n’aurais pas pu faire :
class Person {
String firstName = "";
String lastName = "";
Person(firstName, lastName){ //ceci est le constructeur. Il permet de donner
this.firstName = firstName; //des valeurs aux proriétées del'instanciation
this.lastName = lastName;
}
// méthode qui peut être appelée par l'instance
public void sayYourName(){
String fullName = getfullName();
System.out.printl("Je m'appelle "+ fullName);
}
// méthode qui peut être appelé sans instancié de class
static void sayHello(){
System.out.printl("Coucou de la part de "+this.firstName);
// Dans ce cas, firstName est inconnu car la classe n'est pas instanciée lors de l'appelle de la méthode.
}
}Après le public/static/private il y a le type que retourne la méthode.
// la méthode renvoie 'void'. Elle ne renvoie rien.
public void sayYourName(){
String fullName = getfullName();
System.out.printl("Je m'appelle "+ fullName);
}
// la méthode renvoie un String. il faut absolument un 'return'
// à la fin de la méthode qui renvoie un String
private String getfullName(){
return this.firstName+" "+this.lastName;
}Une méthode peut renvoyer n’importe quels types de variable.
Comment utiliser ma classe dans un autre fichier
Si ta classe est dans un fichier qui est dans le même dossier que là où tu veux l’utiliser, tu n’as rien à faire. Elle est dans le même package (même dossier).
Imagine la structure très complexe suivante:
src/ main.java person.java
Dans ce cas, dans la classe main tu peux parfaitement écrire :
Person person = new Person();pas besoin d’importer ta classe.
Par contre si on a la structure suivante encore plus complexe:
src/ persons/ Person.java main.java
Tu devras écrire une petite ligne en haut de ton fichier Person.java:
package persons;Cela dit que ta classe est dans le package persons.
Dans ton fichier main.java tu doit maintenant l’importer:
import persons.Person;Sécurité
NE TOUCHES PAS A MES ATTRIBUTS !!! N’oublies pas cette phrase.
Afin d’éviter toutes modifications interdites des propriétés d’une classe, il est de bonne pratique de mettre les propriétés (attributs) en private. Cela évitera de les modifier sans le vouloir et même de contrôler les modifications. Pour accéder ou modifier des propriétés private, tu vas devoir utiliser des getters et des setters
class Person {
private String firstName = "";
private String lastName = "";
Person(firstName, lastName){ //ceci est le constructeur. Il permet de donner
this.firstName = firstName; //des valeurs aux proriétées del'instanciation
this.lastName = lastName;
}
// getter
public String getFirstName(){
return firstName
}
// setter
public void setFirstName(String newFirstName){
firstName = newFirstName;
}
// getter
public String getLastName(){
return firstName
}
// setter
public void setLastName(String newLastName){
lastName = newLastName;
}
}
// Dans un autre fichier ...
Person person = new Person("John", "Doe");
person.firstName; // interdit !!!
person.firstName = "machin"; // interdit !!!
person.getFirstName(); // renverra John
person.setFirstName("machin"); // maintenant person.getFirstName() renverra "machin"La méthode toString()
Toutes les classes étendent de la classe Object. Elles ont donc automatiquement la methode toString. Cette methode renvoie une “représentation” de la classe sous forme de chaîne de charactère.
class Test{
// instruction
}
Test test = new Test();
test.toString(); // Test@2uh3jdeh6 (NOM_DE_LA_CLASSE@SON_IDENTIFIANT)C’est pas très lisible. Tu peux donc réécrire cette methode (on appelle ça l’override).
class Person{
private String nom;
private String prenom;
Person(String nom, String prenom){
this.nom = nom;
this.prenom = prenom;
}
@override
public String toString(){
return prenom + " " + nom;
}
}
Person person = new Person("DOE", "John");
person.toString(); // John DOEA toi de renvoyer la phrase que tu veux.