Java >> Java tutorial >  >> Tag >> final

Endeligt søgeord i Java forklaret med eksempler

Vi ved, at Java har 48 reserverede søgeord, hvoraf et er det sidste nøgleord. Det er et Java-nøgleord, der kan bruges til at begrænse brugen af ​​entiteter. Det kan bruges til klasser, metoder og variabler. For forskellige enheder bruges det endelige Java-nøgleord på flere måder. Det endelige søgeord tjener et andet formål for klasse, variabel og metoder.

Denne artikel vil diskutere det sidste søgeord i Java og undersøge, hvordan man implementerer og bruger det med forskellige parametre.

Hvad er det endelige søgeord i Java?

Det sidste nøgleord i Java er en ikke-adgangsspecifikation for at begrænse adgangen til en klasse, variabel eller funktion. Hvis vi bruger det endelige søgeord til at initialisere en variabel, kan vi ikke ændre dens værdi. Når en metode erklæres endelig, kan den ikke tilsidesættes af nogen underklasser. Ydermere forhindrer erklæringen af ​​en klassefinale andre klasser i at arve eller forlænge den.

Med andre ord, ingen andre klasser kan arve de sidste klasser.

Det var et hurtigt overblik over Javas sidste søgeord. Vi vil nu se på at bruge det endelige søgeord i Java med variabler, metoder og klasser. Vi gennemgår følgende punkter i dybden:

  • endelig variabel
  • afsluttende klasse
  • endelig metode

Den sidste variabel i Java

Vi kan ikke ændre værdien af ​​en variabel, når vi først har erklæret den ved hjælp af det endelige søgeord. Vi får en kompileringsfejl, hvis vi forsøger at ændre værdien af ​​den sidste variabel. Vi kan generelt tænke på en endelig variabel som en konstant, fordi dens værdier ikke kan ændres.

Hvad hvis vi erklærer referencevariablerne endelige i stedet for standardvariablerne? Den endelige referencevariabels begrænsning er, at vi ikke kan ændre "hvad objektet refererer til", men vi kan ændre selve objektet. Det er ikke muligt at erklære en variabel final uden først at initialisere den. Mens vi erklærer en endelig variabel, skal vi give den en startværdi. Hvis den erklæres uden initialisering, er den endelige variabel en endelig tom variabel. Imidlertid er initialisering af en endelig variabel enten under eller efter erklæringen påkrævet. Vi får en kompileringsfejl, hvis vi lader den ikke initialiseres.

Syntaks for at definere en endelig variabel:

final int numVar = 35;                             //final variable
final float value;                                       //blank final variable
static final double rate = 7.5;             //final and static variable

Initialisering af den endelige variabel i Java

Fordi en endelig variabel ikke kan efterlades uinitialiseret, er metoderne til initialisering af en endelig variabel som følger:

  • Den mest typiske metode er at erklære en endelig variabel og derefter initialisere den. Vi henviser til den som en sidste tom variabel, hvis du ikke initialiserer den, mens du erklærer den. Følgende to metoder bruges til at oprette en sidste tom variabel.
  • En sidste tom variabel kan initialiseres enten i en instansinitialiseringsblok eller i klassens konstruktør. Hvis klassen indeholder adskillige konstruktører, skal du initialisere den endelige variabel i hver konstruktør; ellers vil der opstå en fejl.
  • Vi kan initialisere en tom endelig statisk variabel i en statisk blok.

Kode til at illustrere den endelige Java-variabel:

package com.codeunderscored.finalkeyword;
public class racingCode {
  //declaring and initializing a final variable
  final int speedlimit = 60;
  void controlSpeed() {
    //Trying to change the value of the final variable will give an error
    speedlimit = 150;
  }
  public static void main(String args[]) {
    Vehicle obj = new Vehicle();
    obj.controlSpeed();
  }
}

Kode for at illustrere den sidste tomme variabel:

package com.codeunderscored.finalkeyword;

public class StudentInfo {
  //Blank final variable
  final int id;

  //parameterized constructor
  StudentInfo(int idNum) {
    //Blank final variable must be initialized in constructor
    id = idNum;
  }

  void getDetails() {
    System.out.println("Id of the Employee is: " + id);
  }

  public static void main(String args[]) {
    StudentInfo stdInfo = new StudentInfo(36);
    stdInfo.getDetails();
  }
}

Kode for at illustrere, hvordan den endelige referencevariabel fungerer:

package com.codeunderscored.finalkeyword;

public class FinalRefVariable {

  public static void main(String[] args) {
    // declaring a final reference variable builder
    final StringBuilder sb = new StringBuilder("Code");

    System.out.println(sb);

    // final reference variable constructor modifies the internal state of an object reference
    builder.append("code");

    System.out.println(sb);
  }
}

Hvornår er det OK at bruge en endelig Java-variabel?

Den eneste forskel mellem en regulær og endelig variabel er, at vi kan ændre værdien af ​​en standardvariabel, efter at den er blevet tildelt. Alligevel kan vi ikke ændre den endelige variabels værdi efter at være blevet tildelt. Som et resultat må vi kun bruge de endelige variabler til at indstille værdier, der forbliver konstante under programmets afvikling.

Javas sidste metode

Vi talte om det endelige søgeord og hvordan man deklarerer den endelige variabel før. Ved at tilføje det endelige nøgleord før metodenavnet, kan vi erklære Java-metoder som Final Methods. Underklasser kan ikke tilsidesætte metoden ved hjælp af det endelige nøgleord. Den endelige metodes formål er at specificere, at et barn eller en underklasse, der udvider den, ikke kan ændre metodens definition.

Kode ansvarlig for at udtrykke den endelige metode i Java:

package com.codeunderscored.finalkeyword;
public class Parent {
  final void final_method() {
    //definition of the Final Method
  }
}
public class Child extends Parent {
  final void final_Method() // overriding the method from the parent class  
  {
    // another definition of the final method
  }
}

Den endelige metode skaber en kompileringsfejl i eksemplet ovenfor. Fordi Final-metoden for forældreklassen blev tilsidesat af Final-metoden for Child-klassen, er dette ikke muligt i programmeringssproget Java.

Formål med endelige metoder i Java

Målet med at definere endelige metoder er at forhindre utilsigtet og forkert brug af metodedefinitioner og samtidig tilsidesætte metoden. Selvom det ikke er teoretisk fejlagtigt, kan det ændre betydningen af ​​tilgangen, hvilket får læseren til at misfortolke den. Som et resultat erklærer vi metoder som endelige i sådanne tilfælde for at undgå unødvendige metodeerklæringer.

Vi opretter en Mammal-klasse og tilføjer en ikke-endelig funktion kaldet sound() til den. Hvis nogen bygger en Human-klasse og tilsidesætter jump()-metoden, hvilket får mennesket til at udskrive det forkerte spring, såsom galop. Det vil få vores metode til at blive misbrugt; For at undgå dette bruger vi den endelige metode, som vist i koden nedenfor. For at forstå formålet med den endelige metode skal du bruge følgende kode:

package com.codeunderscored.finalkeyword;

public class Mammal {

  final void features() {
    int legs = 4;
    int ears = 2;
    int eyes = 2;
    int tail = 1;
    System.out.println("The General Mammalia Characteristics are: ");
    System.out.println("Legs: " + legs);
    System.out.println("Eyes: " + eyes);
    System.out.println("Ears: " + ears);
    System.out.println("Tail: " + tail);
  }
}
public class Human extends Mammal {
  final void jump() {
    System.out.println();
    System.out.println("More humanly Characteristics:");
    System.out.println("Jump: Hop Skip");
  }
  public static void main(String[] args) {
    Human human = new Human();
    human.characteristics();
    human.jump ();
  }
}

Javas sidste klasse

I Java kan vi også erklære en klasse med det endelige nøgleord. Når en klasse erklæres endelig, forhindrer det andre klasser i at arve eller forlænge den. Med andre ord kan en endelig Java-klasse ikke udvides med andre arveklasser. Hvis en anden klasse forsøger at forlænge den sidste klasse, vil der være et kompileringsproblem.

Kodestykket til den sidste klasse:

final class Codeunderscored {
  // methods and variables of the class Tech
}

class coding extends Codeunderscored {
  // COMPILE- TIME error as it extends final class
}

For at forstå den sidste klasse, brug følgende kode:

package com.codeunderscored.finalkeyword;

public class Coding extends Codeunderscored {
  void test() {
    System.out.println("My Method");
  }
  public static void main(String[] args {
    Coding code = new Coding();
    code.test();
  }
}
final class Codeunderscored {
  //code inside class
}

Eksempel:Endelig variabel

class Car{  
  final int speedlimit=180;//final variable  
  void run(){  
    speedlimit=400;  
  }  
  public static void main(String args[]){  
    Car cr=new  Car();  
    cr.run();  
  }  
}//end of class  

Eksempel:Endelig metode

class Car{  
  final void run(){System.out.println("running");}  
}  

class Benz extends Car{  
  void run(){System.out.println("safely running at100kmph");}  

  public static void main(String args[]){  
    Benz bz= new Benz();  
    bz.run();  
  }  
}

Eksempel:Java afsluttende klasse

final class Car{}  

class Benz extends Car{  
  void run(){System.out.println("safely racing at 180kmph");}  

  public static void main(String args[]){  
    Benz bz= new Benz();  
    bz.run();  
  }  
}

Konklusion

Vi har afsluttet artiklen om Javas sidste søgeord. Vi opdagede, at det endelige søgeord i Java kunne bruges med variabler, metoder og klasser til forskellige formål. Du kan bruge det endelige søgeord med variabler, klasser og metoder til at begrænse nogle ting under ekstraordinære omstændigheder. Vi undersøgte også, hvordan man bruger en standard- og en referencevariabel med et endeligt søgeord.

Derudover lærte vi, hvordan man forhindrer en klasse i at tilsidesætte en metode. En klasse kan også gøres endelig, hvilket forhindrer den i at blive forlænget med andre klasser. Det er alt om Javas endelige søgeord.


Java tag