380 likes | 564 Views
Overerving:. It’s a kind of magic…. Principes van OO:. Overerving Encapsulatie Polymorphisme = (deel van het) OO. paradigma. Principes van OO:. Overerving. Principes van OO:. Overerving Een nieuwe klasse maken door een reeds bestaande klasse aan te passen. Principes van OO:.
E N D
Overerving: It’s a kind of magic…
Principes van OO: • Overerving • Encapsulatie • Polymorphisme = (deel van het) OO. paradigma
Principes van OO: • Overerving
Principes van OO: • Overerving Een nieuwe klasse maken door een reeds bestaande klasse aan te passen.
Principes van OO: • Overerving Een nieuwe klasse maken door een reeds bestaande klasse aan te passen. Bvb. een nieuwe Button klasse maken die geel en rode Buttons aanmaakt.
Principes van OO: • Overerving Een nieuwe klasse maken door een reeds bestaande klasse aan te passen. Of: een nieuwe GSMControle klasse maken die een nieuw type GSM aanstuurt.
Principes van OO: • Overerving Nieuwe klasse = “subclass” Bestaande klasse = “superclass”
Principes van OO: • Overerving Nieuwe klasse = “subclass” Bestaande klasse = “superclass” public class Klasse1 extends Klasse2 {}
Principes van OO: • Overerving Nieuwe klasse = “subclass” Bestaande klasse = “superclass” public class GRKnop extends Button {} Vb:
Overerving: principe • De nieuwe klasse begint met dezelfde attributen en methoden als de superklasse; dus alsof je alles van de superklasse nog eens hebt overgeschreven.
Overerving: principe • De nieuwe klasse begint met dezelfde attributen en methoden als de superklasse; dus alsof je alles van de superklasse nog eens hebt overgeschreven. • Je kunt dan aanpassingen gaan maken om je nieuwe klasse te bouwen (zie volgende slide).
Overerving: principe • De nieuwe klasse begint met dezelfde attributen en methoden als de superklasse; dus alsof je alles van de superklasse nog eens hebt overgeschreven. • Je kunt dan aanpassingen gaan maken om je nieuwe klasse te bouwen (zie volgende slide). • Voorbeeld.
Uitzondering: • Constructoren worden niet overgeërfd.
Uitzondering: • Constructoren worden niet overgeërfd. • Je kunt wel de constructoren van de superklasse aanroepen vanuit de subklasse (via super( ) ).
Wat mag? • Je kunt nieuwe attributen toevoegen
Wat mag? • Je kunt nieuwe attributen toevoegen • Je kunt constructoren toevoegen
Wat mag? • Je kunt nieuwe attributen toevoegen • Je kunt constructoren toevoegen • Je kunt nieuwe methoden toevoegen
Wat mag? • Je kunt nieuwe attributen toevoegen • Je kunt constructoren toevoegen • Je kunt nieuwe methoden toevoegen • Je kunt bestaande methoden iets anders laten doen
Wat mag niet? • Je kunt geen overgeërfde attributen weglaten.
Wat mag niet? • Je kunt geen overgeërfde attributen weglaten. • Je kunt geen overgeërfde methoden weglaten.
Wat mag niet? • Je kunt geen overgeërfde attributen weglaten. • Je kunt geen overgeërfde methoden weglaten. Maw. je kunt enkel extra elementen toevoegen of overgeërfde methoden iets anders laten doen.
Hoe doe je het? • Om elementen te houden zoals ze zijn, doe je niets.
Hoe doe je het? • Om elementen te houden zoals ze zijn, doe je niets. • Als je iets wil bijvoegen of veranderen aan de oude klasse, dan moet je (enkel) dit typen in de nieuwe klasse.
Hoe doe je het? • Om elementen te houden zoals ze zijn, doe je niets. • Als je iets wil bijvoegen of veranderen aan de oude klasse, dan moet je (enkel) dit typen in de nieuwe klasse. • Voorbeeld.
Overervingsmodel Java • De klasse Applet en haar basisklassen (= superklassen) • De klasse Object
Constructoren: super( ) • Constructoren van de superklasse worden niet overgeërfd.
Constructoren: super( ) • Constructoren van de superklasse worden niet overgeërfd. • Men kan constructoren van de superklasse aanroepen vanuit constructoren van de subklasse, via super( ).
Constructoren: super( ) • Constructoren van de superklasse worden niet overgeërfd. • Men kan constructoren van de superklasse aanroepen vanuit constructoren van de subklasse, via super( ). • super( ) moet, indien het gebruikt wordt, als eerst regel staan (zoals ook bij this( ) ). (voorbeeld GRTextField)
Constructoren: super( ) • Als super() niet gebruikt wordt, dan roept Java automatisch de default constructor van de superklasse aan om haar datamembers te initialiseren.
Constructoren: super( ) • Als super() niet gebruikt wordt, dan roept Java automatisch de default constructor van de superklasse aan om haar datamembers te initialiseren. • Gevaar: dit compileert niet als de basisklasse geen default (of automatische default) constructor heeft (wanneer is dit?).
Klassendiagram • p 238 boek • p 290 boek
Methoden: overriding = een bestaande methode in de superklasse iets anders laten doen in de subklasse.
Methoden: overriding = een bestaande methode in de superklasse iets anders laten doen in de subklasse. • p 293 zie boek
Methoden: overriding = een bestaande methode in de superklasse iets anders laten doen in de subklasse. • p 293 zie boek • Adhv oefening Cirkel -> Ring
Typecasting tussen klassen • Referentie: • Houdt bij over welk object het gaat • Bepaalt welke methods en attributen dit object kan gebruiken.