java - polymorfisme

, pluralisme er muligheden af et objekt til at tage for mange former.de mest almindelige anvendelse af polymorfisme i oop opstår, når en forælder, klasse, der er anvendt til at referere til et barn klasse objekt. enhver java - objekt, der kan bestå af mere end én er test anses for at være en polymorf.i java, java objekter er polymorfe siden nogen genstand, siger det er test for deres egen type og klasse genstand. det er vigtigt at vide, at den eneste mulighed for at få adgang til et objekt er gennem en henvisning til variabel.en henvisning til variabel kan være af kun én type.en gang erklæret, at den form for reference variabel kan ikke ændres. henvisningen variabel kan omfordeles til andre genstande, forudsat der ikke er angivet, endelig udg.type henvisning variabel skal fastsætte metoder, der kan påberåbe sig om objekt. en henvisning til variabel kan henvise til en genstand af sine type eller nogen undertype af de angivne type.en henvisning til variabel kan betragtes som en klasse eller type interface. eksempel: lad os se på f.eks. offentlige grænseflade vegetar {} {} offentlige klasse dyr offentlige klasse hjort omfatter animalske gennemfører vegetar {}, rådyr klasse anses for at være en polymorf, da det har flere arv.følgende gælder for ovennævnte eksempel:,,, en hjort er dyr,,, en hjort er vegetar,,, en hjort er hjorte,,, en hjort er objekt,,, når vi anvender den reference variable forhold en hjort objekt reference, følgende erklæringer er juridisk, hjorte, d = nye deer(); animalske a = d vegetar v = d objekt, o = d, alle referencestørrelse d, a, v o henviser til samme hjort objekt i bunken., virtuelle metoder: i dette afsnit, skal jeg vise dig, hvordan den adfærd, der udvises af tilsidesat metoder i java giver dem mulighed for at udnytte i - polymorfisme ved udformningen af deres timer. - vi har allerede drøftet metode overordnede, hvor et barn klasse kan tilsidesætte en metode i dets moderselskab.en konstant metode er hovedsagelig gemt i modervirksomheden klasse og ikke er gældende, medmindre barnet klasse bruger super nøgleord i den overordnede metode., * filnavn: employee.java * /offentlige klasse ansatte (private snor navn; private snor adresse; private int nummer; offentlig ansat (string navn, snor adresse, int nummer) (system. println ("opbygningen af en ansat"); this.name = navn; this.address = adresse this.number = nummer} offentlige tomrum mailcheck() {system. println ("skrive en check til" + "this.name + +. adresse);} offentlige snor tostring() {tilbage navn". "+ adresse +" + nummer} offentlige snor getname() (return navn} offentlige snor getaddress() (afsender;} offentlige tomrum setaddress (string - newaddress) (adresse = newaddress;} offentlige int getnumber() {tilbage - nummer), nu skal vi udvide ansat klasse som følger: /* filnavn: salary.java * /offentlige klasse løn omfatter ansatte (private dobbelt løn. //årsløn offentlige løn (string navn, snor adresse, int nummer, dobbelt løn) (super (navn, adresse og nummer) setsalary (løn)} offentlige tomrum mailcheck() {system. println ("inden for mailcheck løn klasse"); system. println ("mailing -" + getname() + "med løn" + løn)} offentlige dobbelt -salary() {tilbage løn;} offentlige tomrum setsalary (dobbelt newsalary) (hvis (newsalary > = 0) (løn = newsalary;}} offentlige dobbelt computepay() {system. println ("edb - løn, løn til" + getname()); tilbage løn /52), nu skal du undersøge følgende programmet nøje og forsøge at fastslå sin produktion: /* filnavn: virtualdemo.java * /offentlige klasse virtualdemo {offentlige statisk tomrum vigtigste (string [] args) (løn, s = nye løn ("mohd mohtashim", "ambehta op", 3, 3600.00); medarbejder, e = nye løn ("john adams", "boston, mor", 2, 2400.00) system. println ("call mailcheck med løn - -"). mailcheck(); system.out.println ("\\ n kalder mailcheck ved hjælp af arbejdstager - -"); f. mailcheck();}}, vil det føre til følgende resultat: anlæggelse af en ansat af en ansat til mailcheck med løn - - inden for mailcheck løn klasse skrantende check til mohd mohtashim med løn 3600.0 kalder mailcheck ved hjælp af ansat reference - - inden for mailcheck løn klasse skrantende check til john adams med løn 2400.0 her, vi instantiate to løn objekter.en med en løn, der er, og den anden med en ansat henvisning e, mens de henviser til, s. mailcheck(), de ser mailcheck() i løn klasse på udarbejdelse af tid, og jvm påberåber sig mailcheck() i løn klasse på løbe tid. med henvisning til mailcheck() på e er helt anderledes, fordi e er en ansat - reference.når de ser, f. mailcheck(),, de ser mailcheck() metode i den ansattes klasse. her ved udarbejdelse af tid, de brugte mailcheck() i ansat til validering af denne erklæring.i løbe tid, men det jvm påberåber sig mailcheck() i løn klasse. den adfærd, der kaldes virtuelt metode besværgelse, og de metoder, der er omhandlet som virtuelle metoder.alle metoder i java opfører sig på denne måde, hvorved en tilsidesat metode er gældende på løbe tid, uanset hvilken datatype den henvisning, der blev anvendt i kildekoden til udarbejdelse af tid.



Previous:
Next Page: