Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afKaren Holm Redigeret for ca. et år siden
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’
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.