Java >> Tutoriel Java >  >> Tag >> class

Mot-clé final en Java | Variable, Méthode, Classe avec exemples

Le mot-clé final en Java est utilisé pour créer une variable constante, empêcher la surcharge de méthode et empêcher l'héritage de classe, etc. Le mot-clé final Java est limité à l'utilisateur et ne peut s'appliquer qu'à :–

  1. Variables
  2. Méthodes
  3. et classe

Variable finale Java

Définir une variable en tant que Final la rend constante, ce qui signifie que vous pouvez en changer (modifier) ​​la valeur. Vous devez initialiser Les variables finales .

Voyons l'exemple de la variable finale en Java.

Il y a une marque variable qui a utilisé le mot-clé final. Nous allons essayer de changer la valeur de celui-ci. Conformément au concept de final, la valeur ne doit pas être modifiée. Une fois qu'une valeur de variable finale Java est attribuée, elle ne peut plus être modifiée.

class TestCode {

    //final variable
    final int mark = 90;

    void run() {
        mark = 90;
    }

    public static void main(String args[]) {
        TestCode obj = new TestCode();
        obj.run();

    }
}

Sortie : Erreur :(7, 9) java :impossible d'attribuer une valeur à la marque de variable finale

De nos jours, IDE est riche en fonctionnalités, où vous recevrez des messages directs sur toute erreur et problème. Voir ci-dessous la capture d'écran a montré une erreur lors de la programmation dans IntelliJ IDEA.

Méthode finale Java

Le principal avantage de la méthode finale est qu'elle ne peut pas remplacer.

Doit lire ce qui est :-

  • Héritage
  • Remplacer la méthode

Voyons l'exemple de la création de la méthode finale et essayons de remplacer une méthode finale en Java.

 class ObjectShapes {
     final void draw(){
         System.out.println("Object Shape");
     }
}

class Rectangle extends ObjectShapes{

    @Override
    void draw() {
        System.out.println("Draw Rectangle");
    }
}

class Shape{
    public static void main(String args[]){
        // object creating
        Rectangle rect1=new Rectangle();
        rect1.draw();
    }
}

Sortie : Erreur :(10, 10) java :draw() dans Rectangle ne peut pas remplacer draw() dans ObjectShapes
overridden la méthode est définitive

L'IDE lui-même affiche une erreur, voir ci-dessous la capture d'écran du code.

Classe finale Java

Pour éviter que votre classe ne soit étendue, utilisez le mot-clé final avec la classe. Voir ci-dessous l'exemple de la façon de le faire. Où la classe ObjectShapes est une classe finale et essaie de s'étendre, mais elle affichera une erreur.

 final class ObjectShapes {
      void draw(){
         System.out.println("Object Shape");
     }
}

class Rectangle extends ObjectShapes{

    @Override
    void draw() {
        System.out.println("Draw Rectangle");
    }
}

class Shape{
    public static void main(String args[]){
        // object creating
        Rectangle rect1=new Rectangle();
        rect1.draw();
    }
}

Sortie : Erreur :(7, 25) java :impossible d'hériter des formes d'objet finales

L'IDE lui-même affichera une erreur, voir la capture d'écran ci-dessous.

Quel est le paramètre final de Java (Arguments) ?

Répondre :Un paramètre (argument) défini (déclaré) avec le mot clé final est appelé un paramètre final. La valeur du paramètre final ne peut pas être modifiée.

final class ObjectShapes {
    void draw(int w, final int h) {
        h = h + h; // can't change value
        w = w + w; // can change value
        System.out.println("Object W and H " + w + " " + h);
    }
}


class Shape {
    public static void main(String args[]) {
        // object creating
        ObjectShapes rect1 = new ObjectShapes();
        rect1.draw(2, 3);
    }
}

Sortie :Erreur :(3, 9) java :le paramètre final h ne peut pas être attribué

Est-ce que le constructeur final existe en Java ?

Ou Mot-clé final avec constructeur ?

Réponse : Non ce n'est pas possible un constructeur final Java, car le constructeur est jamais hérité.

Q :Pouvons-nous utiliser le tableau final dans ja va ?

Réponse : Vous pouvez déclarer Java Final Array sans aucun problème. Le tableau final d'éléments peut changer. Où les tableaux sont des objets et les variables d'objet (éléments du tableau) sont toujours des références en Java.

Voyons un exemple simple.

public class HelloTest {

    public static void main(String[] args) {
        final int arr[] = {1, 2, 3, 4, 5};  // Note: arr is final
        arr[2] = 4; //change the value of index 2

    }
}


Q :Qu'est-ce qu'une variable finale vide ou non initialisée ?

Réponse : Les variables finales qui ne sont pas initialisées au moment de la déclaration sont appelées variables finales vides. Il ne peut être initialisé que dans le constructeur.

Exemple de variable finale vide :-

class Employee{  
int id;  
String name;  
final String PAN_CARD_NUMBER;  
...  
}  

Initialisons la variable finale vide.

class TestBank {
    final int intrestRate;//blank final variable

    TestBank(){
        intrestRate=7;
        System.out.println(intrestRate);
    }

    public static void main(String args[]) {
        new TestBank();
    }

}

Q :Qu'est-ce qu'une variable finale vide statique ?

Réponse : Une variable vide finale statique n'est pas initialisée au moment de la déclaration. Il ne peut être initialisé que dans des blocs statiques.

Exemple de variable finale vide statique :-

class TestBank {
    static final int accounts;//static blank final variable

    static {
        accounts = 10250;
    }

    public static void main(String args[]) {
        System.out.println(TestBank.accounts);
    }

}

Question délicate :la méthode finale est-elle héritée ?

Réponse : Oui, vous pouvez hériter de la méthode finale mais vous ne pouvez pas la remplacer. Voir l'exemple ci-dessous :-

class ObjectShapes {
    void draw() {
        System.out.println("Method ");
    }
}

class Shape extends ObjectShapes {
    public static void main(String args[]) {
        new ObjectShapes().draw();
    }
}

Conclusion

Vous avez appris la finale mot-clé signifie pour les classes, les méthodes et les variables en Java. Vous ne pouvez pas utiliser la finale mot clé souvent en programmation Java, cela peut être une bonne solution de conception.

N'hésitez pas à commenter si vous avez des doutes et des suggestions sur ce tutoriel.

Remarque : Cet exemple (Project) est développé dans IntelliJ IDEA 2018.2.6 (Community Edition)
JRE :11.0.1
JVM :VM serveur OpenJDK 64 bits par JetBrains s.r.o
mac OS 10.14.1
Java 11
Tous les exemples de mots clés Java Final sont en Java 11, il peut donc changer selon Java 9 ou 10 ou les versions mises à niveau.


Balise Java