Gevorderd Programmeren
Luca De Clerck
Year: 2025
Contents
1 Basis Concepten Java 3
2 Bestaande Klassen Gebruiken 4
2.1 Klasse String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Klasse StringBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Wrapper klasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Klasse Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.1 Gebruikersinvoer Inlezen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.2 Bestanden Inlezen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Zelf Klassen Schrijven 6
4 Collections 7
4.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.1 Args: command line arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 HashSet en TreeSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4 HashMap en TreeMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Overerving 9
6 Organisatie en toegang van klasses 13
6.1 Organisatie van klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2 Toegangsmodificatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.3 Toegangsregels binnen een package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.4 Welke toegangsmodificatoren gebruiken? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Exception Handling 14
7.1 Exceptions bij method overriding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.2 De exceptieklasse aanvullen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8 Static, Final en Enum 16
8.1 Static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.2 Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.3 Enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9 Abstracte klassen en Interfaces 17
9.1 Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.1.1 Modificator abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.1.2 Abstracte klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.2 Abstracte methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.2.1 Gebruik abstracte klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
10 Interfaces 18
10.1 Klassieke Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
10.2 Huidige Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10.2.1 Diamond Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10.2.2 Interfaces als functieparameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1
,11 Generische Types 21
11.1 Hiërarchie van generische types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11.2 Gebruik van wilcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11.3 Bounded Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11.4 Generische methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.4.1 Bounded generische methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.5 Eigen generisch type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.6 Iteratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.6.1 Interface iterable<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12 Referentie-Objecten 23
12.1 Arrays en gedeelde structuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.2 Copy-constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.3 Privace leak: referentie als teruggeefwaarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.4 Privacy leak: waarde- of referentieparameters? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.5 Objecten klonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2
, 1 Basis Concepten Java
In Java moeten lokale- en instantie variabelen vooraf gedeclareerd worden zodat deze geheugenplaats gere-
serveerd kan worden voor deze variabele.
In Java zijn er primitieve en referentie types. Bij primitieve variabelen wordt de waarde van een variabele
opgeslagen in de geheugenplaats die de naam van de variabele draagt. Voorbeelden van primitieve datatypes
zijn:
• char
• boolean
• int
• ...
Lazy evaluation is als het eerste deel van de uitdrukking true is, wordt het tweede deel niet getest. U1 &&
U2:
U1 false ⇒ U2 wordt niet getest
U1 true ⇒ U2 wordt wel getest
De conditionele uitdrukking heeft deze syntax: vwde ? uitdr1 : uitdr2
Voorbeeld 1: a = b ¿ 0 ? 1 : -1
is equivalent aan:
i f (b > 0)
a = 1;
else
a = −1
Een object is een instantie van een klasse. De constructor van een klasse wordt gebruikt om objecten van die
klasse te maken.
Een klasse heeft attributen (toestand en methodes (gedrag). Op het object kan je methodes aanroepen
en zijn attributen opvragen. Een klasse is een referentietype.
3
Luca De Clerck
Year: 2025
Contents
1 Basis Concepten Java 3
2 Bestaande Klassen Gebruiken 4
2.1 Klasse String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Klasse StringBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Wrapper klasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Klasse Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.1 Gebruikersinvoer Inlezen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.2 Bestanden Inlezen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Zelf Klassen Schrijven 6
4 Collections 7
4.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.1 Args: command line arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 HashSet en TreeSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4 HashMap en TreeMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Overerving 9
6 Organisatie en toegang van klasses 13
6.1 Organisatie van klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2 Toegangsmodificatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.3 Toegangsregels binnen een package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.4 Welke toegangsmodificatoren gebruiken? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Exception Handling 14
7.1 Exceptions bij method overriding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.2 De exceptieklasse aanvullen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8 Static, Final en Enum 16
8.1 Static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.2 Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.3 Enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9 Abstracte klassen en Interfaces 17
9.1 Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.1.1 Modificator abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.1.2 Abstracte klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.2 Abstracte methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.2.1 Gebruik abstracte klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
10 Interfaces 18
10.1 Klassieke Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
10.2 Huidige Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10.2.1 Diamond Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
10.2.2 Interfaces als functieparameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1
,11 Generische Types 21
11.1 Hiërarchie van generische types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11.2 Gebruik van wilcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11.3 Bounded Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11.4 Generische methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.4.1 Bounded generische methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.5 Eigen generisch type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.6 Iteratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11.6.1 Interface iterable<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
12 Referentie-Objecten 23
12.1 Arrays en gedeelde structuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.2 Copy-constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
12.3 Privace leak: referentie als teruggeefwaarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.4 Privacy leak: waarde- of referentieparameters? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.5 Objecten klonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2
, 1 Basis Concepten Java
In Java moeten lokale- en instantie variabelen vooraf gedeclareerd worden zodat deze geheugenplaats gere-
serveerd kan worden voor deze variabele.
In Java zijn er primitieve en referentie types. Bij primitieve variabelen wordt de waarde van een variabele
opgeslagen in de geheugenplaats die de naam van de variabele draagt. Voorbeelden van primitieve datatypes
zijn:
• char
• boolean
• int
• ...
Lazy evaluation is als het eerste deel van de uitdrukking true is, wordt het tweede deel niet getest. U1 &&
U2:
U1 false ⇒ U2 wordt niet getest
U1 true ⇒ U2 wordt wel getest
De conditionele uitdrukking heeft deze syntax: vwde ? uitdr1 : uitdr2
Voorbeeld 1: a = b ¿ 0 ? 1 : -1
is equivalent aan:
i f (b > 0)
a = 1;
else
a = −1
Een object is een instantie van een klasse. De constructor van een klasse wordt gebruikt om objecten van die
klasse te maken.
Een klasse heeft attributen (toestand en methodes (gedrag). Op het object kan je methodes aanroepen
en zijn attributen opvragen. Een klasse is een referentietype.
3