2.6 Erinnerung: Programmverwaltung Quellencode ..... ..... (getrennt übersetzbare Programmteile) (source code) Übersetzer (compiler, assembler) Objektcode ..... ..... (object/binary code) Binder (linker, linkage editor) Objektprogramm (object/executable program) Lader (loader) startbereites Objektprogramm (im Adreßraum eines Prozesses) Start Java: Übersetzung in Zwischencode (byte code): javac Test.java Suchen externer Typen in Verzeichnissen gemäß Umgebungsvariable CLASSPATH, z.B. in Unix CLASSPATH = .:/usr/lohr/classes:/import/java/classes Interpretation des Zwischencodes: java Test zunächst bindender Lader (linking loader), sucht benutzte Typen ebenfalls gemäß CLASSPATH; nach Einbinden aller benötigten .class-Dateien Start [ alternativ: Laden/Binden nach Bedarf (on demand) ] 3 Polymorphie und Vererbung 3.1 Polymorphe Typsysteme Polymorphie (polymorphism) Universelle Polymorphie Einschluß-Polymorphie, z.B. Vererbung (inheritance) bei objektorientierten Sprachen Ad-hoc-Polymorphie, Überladen (overloading) parametrische Polymorphie, Generizität (genericity) Beispiele - generische Schnittstellen und Klasse in GJ: interface Queue<T> { void append(T item); T remove() throws QueueUnderflow; } class LinkedQueue<T> implements Queue<T> { private class Cell<T> {.....} . . . public LinkedQueue() {.....} } interface Map<Key,Data> {.....}