programmeringssproget Java bruger klasser og objekter til at tillade programmører at arbejde med data . Ligesom C + + , Java giver også brugerne mulighed for at definere klasser, der kan bruge flere datatyper , således at udvide fleksibiliteten og nytten af deres skabte objekter. Ved at tage dette begreb om fleksible datatype skik, kaldet " generiske ", og anvender en rekursiv element, kan programmører sikre, at brugerne af objekter beskæftiger kun visse typer af data, således at den generiske objekt fungerer efter hensigten , mens du stadig giver brugerne mulighed for at udvide brugen af dette objekt. Klasser og typer
Java -funktioner der overvejende som et objekt -orienteret programmeringssprog. Dette betyder, at programmører bruger "klasser" at definere bestemte "typer" af data . Klasser også bruge andre typer af data i deres definition. I den følgende kode , for eksempel klasse boxen tre heltal som en del af dens definition : For at klassen til at fungere for andre programmører , skal de følge denne definition ved at levere tre heltal . Dette fastholder effektiviteten af klassen Box : Hej
class Box {
int længde int bredde int højde ,
offentlig Box ( int l , int w , int h) { //Box skal bruge integersint længde = l; int width = w; int height = h; }}
generiske typer
Nogle programmører dog måske ikke som denne begrænsning. Nogle vil måske udvikle datastrukturer , for eksempel, kræver, at at brugeren af datastrukturen være tilladt at bruge nogen datatype i strukturen . I dette tilfælde kan programmøren skabe en " generisk " klasse, der tager en vis datatype. Så, som i følgende kode eksempel kan klasse Box nu tage enhver type "T" til at repræsentere sine sider. Dette kan være yderst nyttigt, hvis brugeren måske ønsker at bruge enten heltal eller decimaler til at repræsentere sider :
class Box {
T længde T bredde T højde ;
offentlig Box (T l , T w , T h ) {//Box bruger nu typen Tint længde = l; int width = w; int height = h; }}
< br > generiske Rekursive typer
at komplicere generiske typer , kan nogle programmører lege med reglerne for hvad der er tilladt som en generisk type for en klasse. For eksempel, " , T" i stedet for at have en generel datatype programmøren kan oprette en klasse , der tager den samme type som den klasse det tjener som den generiske type . Det følgende eksempel illustrerer dette : I stedet for type T , klassen anvender den generiske type T, som repræsenterer en version , eller " arver " fra , klasse Box:
klasse Box > {
Box længde Box bredde Box højder;
offentlig Box ( Box l , Box w, Box h ) {//Box bruger nu typen Box int længde = l; int width = w; int height = h; }}
Nytten af Rekursive typer
< p> I praksis synes dette forvirrende og kontra-intuitivt . Men faktisk er det repræsenterer en klog måde for skaberen af klassen til at håndhæve bestemt type brug. I dette tilfælde bruger brugeren af klassen type " Box" med generiske type " T" som en generisk type for sig selv. Dette indebærer, at en bruger, der opretter et objekt af typen " Box " er tvunget til at bruge den samme type ( Box ) som den generiske type snarere end et heltal , decimal, eller noget andet. Dette gør det muligt for programmøren at sikre, at en bestemt adfærd opstår, når brugerne interagerer med klasser , de opretter.