- - Handledning: Metodöverskridande i JAVA - Programmering av bästa metoder

Handledning: Metodöverskridande i JAVA - Programmering av bästa metoder

Under arv, när en metoddefinition harsamma metodsignatur (metodnamn + parametersignatur) och returtyp i en underklass som dess superklass, då sägs metoden i underklassen åsidosätta metoden för dess superklass och mekanismen kallas Method Overriding.

Har skapats objekt för underklassen, närden åsidosatta metoden kallas då objektet för underklass hänvisar till metoden som definieras i underklassen som betyder att den åsidosatta metoden som definieras i superklassen kommer att döljas. För att få tillgång till den åsidosatta metoden som definieras i superklassen kan åtkomst av underklassen med hjälp av 'super' nyckelord.

I OOP är Method Overriding en funktion som låterunderklass definierar specifik implementering av metod som redan definieras i en av dess superklasser. Bland de åsidosatta metoderna kommer vilken version av metoden att kallas bestämmas av det åkallande objektet vid körning. Det är vad det heter Polymorfism i körtid Eftersom överdrivna metoder implementerar "ett gränssnitt, multipel användning" aspekt av polymorfism.

Vid åsidosättande av metod löser Java-körtidssystem metodkallingen dynamiskt vid körtid, så kallad Sen bindning.

Funktioner vid metoderöverskridande

  • Åtkomstnivån för den övervägande metoden i underklass kan inte vara mer begränsande än den åsidosatta metoden för superklassen.
  • Metoderna sägs överstiga varandra när det finns en förälder-barn-relation mellan klasserna.
  • Privata och slutliga metoder kan inte åsidosättas.
  • Statiska metoder kan inte åsidosättas utan kan deklareras på nytt.
  • Offentliga eller skyddade icke-slutgiltiga metoder för ett paket kan endast åsidosättas av dess underklass som finns i något annat paket.
  • Konstruktörer kan inte åsidosättas.
  • Överordnade kan kasta alla undantagna undantag.

fördelar

Stödjer specialisering d.v.s. under arv när en underklass ärver en överordnad klass, då kommer underklass att ha alla funktioner i överordnad klass och på toppen av den underklassen kan implementera specifik funktionalitet till den övervägande metoden med samma metodsignatur och returtyp som samma som i dess superklass.

Java-program

class Animal{
void sound(){
System.out.println("default sound...");
}
}
class Cat extends Animal{
void sound(){
System.out.println("mew mew...");
}
}
class Dog extends Animal{
void sound(){
System.out.println("vow vow...");
}
}
class MethodOverrideDemo{
public static void main(String args[]){
Cat cat = new Cat();
Dog dog = new Dog();
System.out.println("--------Cat--------");
cat.sound();
System.out.println("--------Dog--------");
dog.sound();
}
}

Produktion

method_override

Förklaring av kod och utdata

I exemplet ovan är hund och katt bådaunderklasser som härrör från Animal super-klass. I alla klasser (förutom MethodOverrideDemo-klassen) hittar du metodljudet (), som definieras under djurklass på ett generiskt sätt och i katt- och hundklassen har åsidosatt ljudmetoden () -metoden för djurklass med specifik implementering enligt scenariot . Uppenbarligen är Cat's ljud "mew mew ..." och det av hundens "vow vow ..." -ljud () definieras i dessa klasser efter behov. Om vi ​​skapar objekt av klass Cat, kommer det att åberopa ljud () -metod för Cat-klass, detsamma gäller för objekt av Dog-klass. Jag antar att allt från utgången är klart.

Kolla in mer användbara handledning och definitiva riktlinjer för Java-programmering här.

kommentarer