Java >> Java tutorial >  >> Java

Tilsidesæt Java | Metode, der tilsidesætter Java | Eksempler

Hvis en klasse (underklasse) har de samme metoder som dens overordnede klasse, kaldes den en Method Overriding Java . I subclass(child class) vises tilsidesættelsesmetoder med @override Java-annotering.

Metodetilsidesættelse kaldes også runtime polymorphism i Java. Det opnås ved hjælp af en arv, et koncept med objektorienteret programmering (OOps).

I dette selvstudie lærer du om, hvad der er tilsidesættelse af metoder, og hvordan du bruger det med nogle grundlæggende eksempler i Java.

Tilsidesættelse af syntaks

En simpel syntaks for Java-tilsidesættelse.

class ParentClass {
    //method
    .....
}

class SubClass extends ParentClass{
    @Override
    //method
    .....
}
class SubClass extends ParentClass{
    @Override
    //method
    .....
}

Komplet Java-tilsidesættende eksempel

Hvordan tilsidesætter man metoder i java? Nedenfor er et eksempel på tilsidesættelse af en løn()-metode i en underklasse.

//base class
class Employee {
    //method
    void salary() {
        System.out.println("All Employee Salary Range is 10-50k");
    }
}

//subclass

class Manager extends Employee{
    @Override
    void salary(){
        System.out.println("Manager Salary  is 40k");
    }
}

public class MethodOverriding {

    public static void main(String arg[]){

        // creating base (parent) class object
        Employee employee = new Employee();
        employee.salary();

        // creating sub (child) class object
        Employee employee1 = new Manager();
        employee1.salary();

    }
}

Output: Alle medarbejderes lønintervaller er 10-50k
Lederlønnen er 40k

Hvornår skal tilsidesætte Java i metoder?

Her er et komplet og realtidseksempel på "Override Java".

I hver virksomhed er der en forskellig løn alt efter stillingen. Så vi definerer løn()-metoder, der tilsidesættes. En klasseleder og teamleder udvider (arver) i medarbejderklassen.

Kode:

//base class
class Employee {
    //method
    void salary() {
        System.out.println("All Employee Salary Range is 10-50k");
    }
}

//subclass

class Manager extends Employee {
    @Override
    void salary() {
        System.out.println("Manager Salary is 40k");
    }
}
//subclass

class TeamLead extends Employee {
    @Override
    void salary() {
        System.out.println("Team Lead Salary is 30k");
    }
}

public class MethodOverriding {

    public static void main(String arg[]) {

        // creating base (parent) class object
        Employee employee = new Employee();
        employee.salary();

        // creating sub (child) class object
        Employee employee1 = new Manager();
        employee1.salary();

        // creating sub (child) class object
        Employee employee2 = new TeamLead();
        employee2.salary();

    }
}

Output: Alle medarbejderes lønintervaller er 10-50k
Lederlønnen er 40k
Team Leads løn er 30k

Brug af Java-metodetilsidesættelse

  • En specifik erklæring om superklassemetoder i underklassen. Det betyder, at du i en underklasse kan skrive din egen sætning (kode) for at udføre handlingen.
  • For at opnå en Runtime-polymorfi

Regler for tilsidesættelse af Java-metode

  • Underklassemetoden skal have samme navn som i forældreklassen.
  • Tilsidesatte metoder parametre(argument) skal være det samme som overordnede klassemetoder.
  • Kræver et IS-A-forhold (arv).
  • returtype skal være den samme som forældreklassen.
  • Et adgangsniveau for metoder kan ikke være mere begrænsende . Eksempel – Hvis superklassemetoden er erklæret offentlig, kan den overordnede metode i underklassen hverken være privat eller beskyttet.
  • Slutlige metoder kan ikke tilsidesættes.
  • Statiske metoder kan ikke tilsidesættes, men kan generklæres.
  • Konstruktører kan ikke tilsidesættes.

Hvorfor og hvornår super søgeord bruges i java-tilsidesættelse?

Svar: Når du vil bruge en superklassemetode i underklassen og at de samme metoder allerede er tilsidesat i en underklasse. Her er et eksempel på, hvordan man bruger super nøgleord i java tilsidesættelse.

//super class
class Office {
    //method
    void workHour() {
        System.out.println("All Employee Work Hour is 5 to 8 Hour");
    }
}

//sub class
class Manager extends Office {
    @Override
    void workHour() {
        super.workHour();
        System.out.println("Manager working for 20 hours a day");
    }
}

public class MethodOverriding {

    public static void main(String arg[]) {

        // creating base (parent) class object
        Manager manager = new Manager();
        manager.workHour();

    }
}

Output: Al medarbejders arbejdstid er 5 til 8 timer
Leder, der arbejder 20 timer om dagen

Spørgsmål:Hvornår bruger du Javas @Override-annotering og hvorfor?

Svar: Tilsidesæt java-anmærkning Brug den hver gang, når du tilsidesætter en metode. her er, vi nævner 2 grunde eller fordele ved det.

  1. Ved at gøre det kan du drage fordel af compiler at kontrollere, at dine metoder faktisk er tilsidesat. Du kan forhindre en almindelig fejl med at stave et metodenavn forkert eller ikke matche parametrene korrekt. IDE vil vise dig en fejl, der faktisk ikke er et problem med metodetilsidesættelse.
  2. For det andet gør det din kode lettere at forstå, kan nemt finde ud af, at denne metode er tilsidesat.

Spørgsmål:Er konstruktørtilsidesættelse i Java mulig?

Svar: Nej, konstruktørtilsidesættelse er ikke mulig, fordi JVM kalder superklassekonstruktøren, mens den underordnede klasseforekomst oprettes.

Når en underklasseinstans oprettede, påkaldte basisklassekonstruktøren. Fortsæt derefter med underklasse-konstruktør-sætningerne.

Java-konstruktører er ikke metoder, der kan tilsidesættes.

Spørgsmål: Kan du tilsidesætte java-hovedmetoden?

Svar: Nej, du kan ikke tilsidesætte hovedmetoden i Java, fordi det er en statisk metode.

Spørgsmål:Hvorfor har Java ikke lov til at tilsidesætte statiske metoder?

Svar: Java Static-metoder behandles som globale af JVM, der er slet ikke bundet til en objektinstans.

Spørgsmål:Kan du tilsidesætte en statisk metode?

Svar: Nej, en statisk metode kan ikke tilsidesættes i Java. Fordi tilsidesættelse er et eksempel på run-time polymorfi.

Skriv en kommentar, hvis du er i tvivl og forslag nedenfor.


Java tag