Java >> Java tutorial >  >> Tag >> class

Sidste søgeord i Java | Variabel, Metode, Klasse med eksempler

Det endelige søgeord i java bruges til at skabe en konstant variabel, forhindre metodeoverbelastning og forhindre klassearv osv. Java Final nøgleord begrænser til brugeren, og det kan kun gælde for:–

  1. Variabler
  2. Metoder
  3. og klasse

Java Final Variable

At definere en variabel som en Final gør den konstant, hvilket betyder, at du kan ændre (modificeret) værdien af ​​den. Du skal initialisere De endelige variabler .

Lad os se eksemplet på den endelige variabel i Java.

Der er et variabelt mærke der har brugt det endelige søgeord. Vi vil prøve at ændre værdien af ​​det. I henhold til begrebet endelig bør værdien ikke ændres. Når en endelig Java-variabelværdi er tildelt, kan den ikke ændres.

class TestCode {

    //final variable
    final int mark = 90;

    void run() {
        mark = 90;
    }

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

    }
}

Output: Fejl:(7, 9) java:kan ikke tildele en værdi til det endelige variabelmærke

I dag er IDE rig på funktioner, hvor du får direkte beskeder om enhver fejl og problem. Se nedenstående skærmbillede viste en fejl under programmering i IntelliJ IDEA.

Java endelige metode

Den største fordel ved den endelige metode er, at den ikke kan tilsidesættes.

Skal læse om, hvad der er:-

  • Arv
  • Tilsidesættelse af metode

Lad os se eksemplet på, hvordan man laver den endelige metode og forsøger at tilsidesætte en endelig metode i 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();
    }
}

Output: Fejl:(10, 10) java:draw() i Rectangle kan ikke tilsidesætte draw() i ObjectShapes
override metoden er endelig

IDE selv viser en fejl, se nedenstående skærmbillede af kode.

Java sidste klasse

For at forhindre, at din klasse udvides, skal du bruge det sidste nøgleord med klassen. Se nedenstående eksempel på, hvordan du gør det. Hvor ObjectShapes-klassen er en sidste klasse og forsøger at udvide, men den vil vise en fejl.

 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();
    }
}

Output: Fejl:(7, 25) java:kan ikke arve fra endelige ObjectShapes

IDE selv vil vise en fejl, se nedenstående skærmbillede.

Hvad er Javas sidste parameter (argumenter)?

Svar :En parameter (argument) defineret (erklæret) med det endelige nøgleord kaldes en endelig parameter. Værdien af ​​den endelige parameter kan ikke ændres.

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);
    }
}

Output :Fejl:(3, 9) java:endelig parameter h tildeles muligvis ikke

Har findes endelig konstruktøri Java?

Eller endeligt søgeord med konstruktør?

Svar: Ikke det er ikke muligt en endelig Java-konstruktør, fordi konstruktøren er aldrig arvet.

Sp:Kan vi bruge det endelige array i ja va?

Svar: Du kan erklære Java Final Array uden problemer. Den endelige række af elementer kan ændre sig. Hvor Arrays er objekter og objektvariabler (elementer af arrayet) er altid referencer i Java.

Lad os se et enkelt eksempel.

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

    }
}


Sp:Hvad er en tom eller ikke-initialiseret slutvariabel?

Svar: Hvilke endelige variabler, der ikke initialiseres på tidspunktet for erklæringen, kaldes en tom slutvariabel. Det kan kun initialiseres i konstruktøren.

Eksempel på tom slutvariabel:-

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

Lad os initialisere den tomme endelige variabel.

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

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

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

}

Sp:Hvad er en statisk blank slutvariabel?

Svar: En statisk endelig blank variabel initialiseres ikke på tidspunktet for erklæringen. Det kan kun initialiseres i statiske blokke.

Eksempel på statisk blank slutvariabel:-

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

    static {
        accounts = 10250;
    }

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

}

Svært spørgsmål:Nedarves den endelige metode?

Svar: Ja, du kan arve den endelige metode, men du kan ikke tilsidesætte den. Se nedenstående eksempel:-

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

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

Konklusion

Du lærte om finalen nøgleordsmidler for klasser, metoder og variabler i Java. Du må ikke bruge finalen nøgleord ofte i Java-programmering, kan det være en god designløsning.

Kommenter, hvis du er i tvivl om og forslag til denne vejledning.

Bemærk: Dette eksempel (Projekt) er udviklet i IntelliJ IDEA 2018.2.6 (Community Edition)
JRE:11.0.1
JVM:OpenJDK 64-Bit Server VM af JetBrains s.r.o
macOS 10.14.1
Java version 11
Alle Java Final-søgeordseksempler er i Java 11, så det kan ændre sig på anderledes end Java 9 eller 10 eller opgraderede versioner.


Java tag