Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.

Lignende præsentationer


Præsentationer af emnet: "Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype."— Præsentationens transcript:

1 Fundamentale sprogbegreber Typer

2 dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype –interfacetype –arraytype Regel –bland ikke usammenlignelige typer Subtyper –Javas definition på hvornår typer er sammenlignelige

3 dIntProg, F08Typer.3 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d = 3.14; i = 7; d = i // ok i = d // ej ok! ≤

4 dIntProg, F08Typer.4 Subtyperelation for objekttyper Aktør SkuespillerKoreograf klap (heltal n) drej (heltal n) skrivAntalTricks() ElevGnavpotKarakter… Aktør Koreograf ≤ Skuespiller ≤ Aktør ≤ Object Elev ≤ Karakter... ≤ Skuespiller Gnavpot ≤ Object

5 dIntProg, F08Typer.5 Eksempler Skuespiller s; Gnavpot g; s= new Skuespiller(...); g= new Gnavpot(...); s= g; // ok g= s; // ej ok! Skuespiller Gnavpot Køretøj k; Cykel c; k= new Bil(...);// ok c= new Cykel(...); k= c; // ok c= k; // ej ok! Køretøj Cykel Bil

6 dIntProg, F08Typer.6 Typeregel for assignment Assignmentsætningen giver kun mening når typen af udtrykket på højresiden er en subtype af variablen på venstresiden. v= exp; T(v) ≥ T(Exp) Det giver mening at assigne et cykelobjekt til en variabel af typen Køretøj, men det giver ikke mening at assigne et køretøj (der kan være mange forskellige ting) til en variabel af typen Cykel. Køretøj Cykel

7 dIntProg, F08Typer.7 Forfremmelse og begrænsning (1) Forfremmelse –En værdi af en subtype kan ved en implicit typekonvertering (automatisk) forfremmes til en værdi af en supertype Begrænsning –En værdi af en supertype kan ved en eksplicit typekonvertering (et såkaldt ”type cast”) begrænses til en værdi af en subtype Eksempel: 9 + (int) ((6 * 2) / 2.5) 9 + (int) ( 12 / 2.5) 9 + (int) ( 12.0 / 2.5) 9 + (int) 4.8 9 + 4 13

8 dIntProg, F08Typer.8 Forfremmelse og begrænsning (2) double d1, d2; int i; d2= 3.14; // ok? d1= 7; // ok? i= d1; // ok? i= d2; // ok? i= (int) d1; // ok? i= (int) d2; // ok? int ≤ double

9 dIntProg, F08Typer.9 Forfremmelse og begrænsning (3) Køretøj k1, k2; Cykel c; k1= new Bil(...); // ok? k2= new Cykel(...); // ok? c= k1; // ok? c= k2; // ok? c= (Cykel) k1; // ok? c= (Cykel) k2; // ok? Cykel ≤ Køretøj Bil ≤ Køretøj Køretøj Cykel Bil

10 dIntProg, F08Typer.10 Konstanter (literals) LiteralType 2int 2.0double ‘2’char “2”String “two”String

11 dIntProg, F08Typer.11 Advarsel: Java behandler tegn som tal Javas subtyperelation: char ≤ int ≤ double Forfremmelse automatisk hvis det er nødvendigt 2 + 1.5 evaluerer til 3.5 ‘2’ + 1 evaluerer til 51 !!! Begrænsning kun ved eksplicitte cast (int) (2 + 1.5) evaluerer til 3 (char) (‘2’ + 1) evaluerer til ‘3’


Download ppt "Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype."

Lignende præsentationer


Annoncer fra Google