Wat is een virtuele functie in Java?



Dit artikel behandelt het concept van virtuele functie in Java met zijn toepassingen in polymorfisme en het aanroepen van functies tijdens runtime met voorbeelden.

Java is een die concepten ondersteunt zoals polymorfisme, overerving, abstractie, enz. Deze OOP-concepten draaien om klassen , voorwerpen , en ledenfuncties. De virtuele functie is zo'n concept dat helpt bij run-time polymorfisme. In deze blog zullen we leren over virtuele functie in . In dit artikel worden de volgende onderwerpen besproken.

Wat is een virtuele functie in Java?

Het gedrag van een virtuele functie kan zijn overschreven met de overervende klassefunctie met dezelfde naam. Het wordt in principe gedefinieerd in de basisklasse en overschreven in de overgeërfde klasse.





De virtuele functie in Java wordt naar verwachting gedefinieerd in het . We kunnen de virtuele functie aanroepen door naar het object van de afgeleide klasse te verwijzen met behulp van de referentie of pointer van de basisklasse.

Elke niet-statische methode in Java is standaard een virtuele methode. Java heeft geen virtueel trefwoord zoals C ++ , maar we kunnen ze definiëren en gebruiken voor concepten als run-time polymorfisme.



Voorbeeld van virtuele functie

Laten we een voorbeeld bekijken om te begrijpen hoe we virtuele functies in Java kunnen gebruiken.

class Voertuig {void make () {System.out.println ('heavy duty')}} public class Trucks verlengt Voertuig {void make () {System.out.println ('Transportvoertuig voor zwaar gebruik')} public static void main (String args []) {Vehicle ob1 = new Trucks () ob1.make ()}}
 Uitgang: Transportvoertuig voor zwaar gebruik

Elke niet-statische methode in Java is een virtuele functie behalve laatste en privé methoden . De methoden die niet kunnen worden gebruikt voor het polymorfisme, worden niet als een virtuele functie beschouwd.

NAAR wordt niet als een virtuele functie beschouwd omdat een statische methode aan de klasse zelf is gebonden. We kunnen de statische methode dus niet aanroepen vanuit de objectnaam of klasse voor . Zelfs als we de statische methode negeren, resoneert deze niet met het concept van polymorfisme.



Virtuele functie met interfaces

Alle Java-interfaces zijn virtueel, ze vertrouwen op de implementatieklassen om methode-implementaties te bieden. De code voor uitvoering wordt tijdens runtime geselecteerd. Hier is een eenvoudig voorbeeld voor een beter begrip.

chef vs marionet vs jenkins
interface Car {void applyBrakes ()} interface Audi implementeert Car {void applyBrakes () {System.out.println ('breaks Applied')}}

Hier is applyBreaks () virtueel omdat functies in interfaces zijn ontworpen om te worden overschreven.

Pure virtuele functie

Pure virtuele functie is een virtuele functie waarvoor we geen implementaties hebben. Een abstracte methode in Java kan worden beschouwd als een puur virtuele functie. Laten we een voorbeeld nemen om dit beter te begrijpen.

abstract class Dog {final void bark () {System.out.println ('woof')} abstract void jump () // dit is een pure virtuele functie} class MyDog verlengt Dog {void jump () {System.out.println ('Springt in de lucht')}} public class Runner {public static void main (String args []) {Dog ob1 = new MyDog () ob1.jump ()}}
 Uitgang: Springt in de lucht

Dit is hoe virtuele functie kan worden gebruikt met abstracte klasse.

Runtime polymorfisme

Runtime-polymorfisme is wanneer een aanroep van een overschreven methode tijdens runtime wordt opgelost in plaats van compileren . De overschreven methode wordt aangeroepen via de referentievariabele van de basisklasse.

class Edureka {public void show () {System.out.println ('welcome to edureka')}} class Cursus breidt Edureka uit {public void show () {System.out.println ('Java Certification Program')} public static void main (String args []) {Edureka ob1 = nieuwe cursus () ob1.show ()}}
 Uitgang: Java-certificeringscursus

Punten om te onthouden

  • Voor een virtuele functie in Java heb je geen expliciete declaratie nodig. Het is een die we hebben in een basisklasse en opnieuw gedefinieerd in de afgeleide klasse met dezelfde naam.

  • De basisklasse-pointer kan worden gebruikt om naar het object van de afgeleide klasse te verwijzen.

    verschil tussen overbelasting en overbelasting
  • Tijdens de uitvoering van het programma wordt de basisklasse-pointer gebruikt om de afgeleide klassefuncties aan te roepen.

Dit brengt ons aan het einde van dit artikel waar we hebben geleerd over de virtuele functie in Java. Ik hoop dat je duidelijk bent met alles wat in deze tutorial met je is gedeeld.

Als je dit artikel over 'Virtuele functie in Java' relevant vond, bekijk dan het een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

We zijn hier om je te helpen bij elke stap op je reis en om een ​​curriculum te bedenken dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden. De cursus is bedoeld om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Leuk vinden Slaapstand & .

Mocht u vragen tegenkomen, stel dan gerust al uw vragen in het commentaargedeelte van 'Virtuele functie in Java' en ons team zal u graag antwoorden.