Polymorfisme: inleiding Hello me, meet the real me…
Case study De add( ) methode van Applet De add( ) methode van Applet
Referenties revisited Referentie: houdt de positie van het object bij en bepaalt hoe het object zich “gedraagt”. Referentie: houdt de positie van het object bij en bepaalt hoe het object zich “gedraagt”.
Referenties revisited Referentie: houdt de positie van het object bij en bepaalt hoe het object zich “gedraagt”. Referentie: houdt de positie van het object bij en bepaalt hoe het object zich “gedraagt”. Gedragen: de verzameling van methods die op het object kunnen aangeroepen worden. Gedragen: de verzameling van methods die op het object kunnen aangeroepen worden.
Upcasten Er kan naar een object verwezen worden door een referentie van de klasse van dat object, of door een referentie van elke superklasse van dat object. Er kan naar een object verwezen worden door een referentie van de klasse van dat object, of door een referentie van elke superklasse van dat object.
Upcasten Vb: Component c1 = new Button(); Vb: Component c1 = new Button();
Upcasten Er kan naar een object verwezen worden door een referentie van de klasse van dat object, of door een referentie van elke superklasse van dat object. Er kan naar een object verwezen worden door een referentie van de klasse van dat object, of door een referentie van elke superklasse van dat object. Vb: Component c1 = new Button(); Vb: Component c1 = new Button(); Het object gedraagt zich als een object van de klasse van de referentie: polymorfisch gedrag. Het object gedraagt zich als een object van de klasse van de referentie: polymorfisch gedrag.
Upcasten Dit wil zeggen dat het Button object, waarnaar verwezen wordt door een Component referentie, enkel die methods die in Component gedeclareerd zijn, zal kunnen uitvoeren. Dit wil zeggen dat het Button object, waarnaar verwezen wordt door een Component referentie, enkel die methods die in Component gedeclareerd zijn, zal kunnen uitvoeren.
Downcasten Een object, waarnaar verwezen wordt door een referentie van een superklasse van dit object, heeft geen toegang tot die methods die specifiek zijn aan haar klasse. Een object, waarnaar verwezen wordt door een referentie van een superklasse van dit object, heeft geen toegang tot die methods die specifiek zijn aan haar klasse.
Downcasten Het object kan terug toegang tot haar specifieke methods krijgen wanneer er terug een referentie van haar eigen klasse naar het object gelegd wordt. Het object kan terug toegang tot haar specifieke methods krijgen wanneer er terug een referentie van haar eigen klasse naar het object gelegd wordt.
Downcasten Dit vereist een expliciete cast. Deze handeling wordt “downcasten” genoemd. Dit vereist een expliciete cast. Deze handeling wordt “downcasten” genoemd. Vb: Vb: Component c1 = new Button(); Component c1 = new Button(); c1.setLabel(“hello”); // werkt niet Button b1 = (Button) c1; // downcast b1.setLabel(“Hello”); // werkt wel
ClassCastException De compiler kan niet op voorhand weten of een downcast mag uitgevoerd worden. De compiler kan niet op voorhand weten of een downcast mag uitgevoerd worden.
ClassCastException Een onmogelijke downcast (bvb. een object dat origineel een Button was downcasten naar een TextField) resulteert in een runtime error: ClassCastException. Een onmogelijke downcast (bvb. een object dat origineel een Button was downcasten naar een TextField) resulteert in een runtime error: ClassCastException.
Typecontrole Elk object heeft, overgeërfd van Object, de method getClass(). Hierop getName() uitvoeren geeft voor elk object haar echte klassenaam weer. Elk object heeft, overgeërfd van Object, de method getClass(). Hierop getName() uitvoeren geeft voor elk object haar echte klassenaam weer.
Typecontrole Dit kan gebruikt worden om te checken of een downcast toegestaan is. Dit kan gebruikt worden om te checken of een downcast toegestaan is. Bvb: knop1.getClass().getName() Bvb: knop1.getClass().getName()
Nut van polymorfisch gedrag: Verschillende subtypes van een klasse kunnen op dezelfde manier behandeld worden (bvb. de add() en de addActionListener() methoden van Applet) Verschillende subtypes van een klasse kunnen op dezelfde manier behandeld worden (bvb. de add() en de addActionListener() methoden van Applet) Zie vb. Zie vb.
e.getSource() Geeft een referentie van het type Object terug dat verwijst naar het object dat het event triggerde. Geeft een referentie van het type Object terug dat verwijst naar het object dat het event triggerde.
e.getSource() Dit object moet gedowncast worden naar zijn specifieke klasse alvorens het zijn specifieke methods kan gebruiken. Dit object moet gedowncast worden naar zijn specifieke klasse alvorens het zijn specifieke methods kan gebruiken. Zie vb. Zie vb.