Typer af polymorfisme i java-Runtime og kompilere tid polymorfisme

i den sidste tutorial diskuterede vi polymorfisme i Java. I denne vejledning vil vi se typer af polymorfisme. Der er to typer polymorfisme i java:
1) statisk polymorfisme også kendt som kompileringstidspolymorfisme
2) dynamisk polymorfisme også kendt som runtime polymorfisme

Kompileringstidspolymorfisme (eller statisk polymorfisme)

polymorfisme, der løses under kompileringstid, er kendt som statisk polymorfisme. Metode overbelastning er et eksempel på kompileringstid polymorfisme.
metode overbelastning: dette giver os mulighed for at have mere end en metode med samme navn, hvis parametrene for metoder er forskellige i antal, sekvens og datatyper af parametre. Vi har allerede diskuteret metode overbelastning her: hvis du ikke læste denne vejledning, henvises: metode overbelastning i Java

eksempel på statisk polymorfisme

metode overbelastning er en af de måder, java understøtter statisk polymorfisme på. Her har vi to definitioner af den samme metode Tilføj (), som tilføjelsesmetoden ville blive kaldt, bestemmes af parameterlisten på kompileringstidspunktet. Det er grunden til dette er også kendt som kompilere tid polymorfisme.

class SimpleCalculator{ int add(int a, int b) { return a+b; } int add(int a, int b, int c) { return a+b+c; }}public class Demo{ public static void main(String args) { SimpleCalculator obj = new SimpleCalculator(); System.out.println(obj.add(10, 20)); System.out.println(obj.add(10, 20, 30)); }}

udgang:

3060

Runtime polymorfisme (eller dynamisk polymorfisme)

det er også kendt som dynamisk metode afsendelse. Dynamisk polymorfisme er en proces, hvor et opkald til en tilsidesat metode løses ved runtime, det er derfor, det kaldes runtime polymorfisme. Jeg har allerede diskuteret metode tilsidesættelse i detaljer i en separat tutorial, henvise det: metode tilsidesættelse i Java.

eksempel
i dette eksempel har vi to klasser ABC. ABC er en forældreklasse, og SF er en børneklasse. Børneklassen tilsidesætter metoden mymetod () for forældreklasse. I dette eksempel har vi barn klasse objekt tildelt den overordnede klasse reference, så for at bestemme, hvilken metode ville blive kaldt, typen af objektet ville blive bestemt på run-time. Det er den type objekt, der bestemmer, hvilken version af metoden der skal kaldes (ikke typen af reference).

for at forstå begrebet overordnet skal du have den grundlæggende viden om arv i Java.

class ABC{ public void myMethod(){System.out.println("Overridden Method"); }}public class XYZ extends ABC{ public void myMethod(){System.out.println("Overriding Method"); } public static void main(String args){ABC obj = new XYZ();obj.myMethod(); }}

Output:

Overriding Method

når en tilsidesat metode kaldes gennem en henvisning til overordnet klasse, bestemmer objektets Type, hvilken metode der skal udføres. Således foretages denne bestemmelse på kørselstidspunktet.
da både klasser, børneklasse og forældreklasse har samme metode animalSound. Hvilken version af metoden (børneklasse eller forældreklasse), der kaldes, bestemmes ved kørsel af JVM.

få mere overordnede eksempler:

ABC obj = new ABC();obj.myMethod();// This would call the myMethod() of parent class ABCXYZ obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZABC obj = new XYZ();obj.myMethod();// This would call the myMethod() of child class XYZ

i det tredje tilfælde skal metoden til børneklasse udføres, fordi hvilken metode der skal udføres bestemmes af objekttypen, og da objektet hører til barneklassen, kaldes børneklasseversionen af myMethod ().

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

More: