Java klassen en objecten: een praktische gids
Java-klassen en objecten
Ontdek hoe Java's klasse- en objectmodel real-world concepten omzet in herbruikbare code.
Java is fundamenteel object-georiënteerd. Het breekt complexe problemen op in beheersbare, zelfstandige entiteiten – objecten – elk met state en behavior.
Een object kan alles zijn wat data (state) vasthoudt en acties (behavior) biedt. Bijvoorbeeld, een fiets heeft:
- States: idle, eerste versnelling, etc.
- Behaviors: remmen, versnellen, etc.
Voordat we in objecten duiken, laten we de blauwdruk verkennen die ze definieert: een klasse.
Java-klasse
Een klasse is de sjabloon waaruit objecten geïnstantieerd worden. Denk eraan als een huis-tekening die verdiepingen, deuren en ramen specificert. Meerdere huizen kunnen gebouwd worden vanaf dezelfde tekening, net als veel objecten vanuit een enkele klasse gecreëerd kunnen worden.
Een klasse aanmaken in Java
Definieer een klasse met het class-keyword:
class ClassName {
// velden
// methodes
}
Velden (variabelen) houden de state van een object, methodes encapsuleren het behavior.
- Velden slaan data op.
- Methodes voeren operaties uit.
Voorbeeld: een Bicycle-klasse.
class Bicycle {
// state
private int gear = 5;
// behavior
public void braking() {
System.out.println("Remmen werkt");
}
}
Hier is Bicycle een prototype. Meerdere fiets-instanties kunnen aangemaakt worden, elk met dezelfde structuur maar onafhankelijke data.
Let op: private en public zijn access-modifiers die zichtbaarheid controleren. Meer details: Java access modifiers.
Java-objecten
Een object is een instantie van een klasse. Bijvoorbeeld, Bicycle is de klasse, en MountainBicycle, SportsBicycle, TouringBicycle, etc., zijn distincte objecten afgeleid van die klasse.
Een object aanmaken in Java
Instantieer een object met het new-keyword en de constructor van de klasse:
className object = new className();
// Voor Bicycle
Bicycle sportsBicycle = new Bicycle();
Bicycle touringBicycle = new Bicycle();
Constructors zijn speciale methodes die de klassenaam delen. Voor verder lezen: Java Constructors.
Namen als sportsBicycle en touringBicycle dienen als referenties naar hun respectievelijke instanties.
Meerdere instanties van dezelfde klasse kunnen coexisteren zonder elkaar te beïnvloeden.
Let op: Klassevelden en methodes worden gezamenlijk members genoemd.
Leden van een klasse benaderen
Gebruik de dot-operator met een objectreferentie om de members te bereiken:
class Bicycle {
int gear = 5;
void braking() {
// ...
}
}
Bicycle sportsBicycle = new Bicycle();
sportsBicycle.gear;
sportsBicycle.braking();
Hier benadert sportsBicycle het gear-veld en roept de braking()-methode aan.
- sportsBicycle.gear – leest de gear-waarde.
- sportsBicycle.braking() – roept de rem-routine aan.
In het volgende hoofdstuk verkennen we Java-methodes in de diepte.
Hieronder is een compleet voorbeeld dat deze concepten verbindt.
Voorbeeld: Java-klasse en objecten
class Lamp {
// Houdt bij of de lamp brandt
boolean isOn;
void turnOn() {
isOn = true;
System.out.println("Licht aan? " + isOn);
}
void turnOff() {
isOn = false;
System.out.println("Licht aan? " + isOn);
}
}
class Main {
public static void main(String[] args) {
Lamp led = new Lamp();
Lamp halogen = new Lamp();
led.turnOn();
halogen.turnOff();
}
}
Output:
Licht aan? true Licht aan? false
In dit programma definieert Lamp een instance-variabele isOn en twee methodes die het manipuleren. De Main-klasse creëert twee lamp-objecten – led en halogen – en roept hun methodes onafhankelijk aan.
Elk object houdt zijn eigen kopie van isOn, zodat operaties op de ene lamp de andere niet beïnvloeden.
Voorbeeld: Objecten aanmaken binnen dezelfde klasse
Objecten kunnen ook geïnstantieerd worden binnen dezelfde klasse die ze definieert. Zo werkt het:
class Lamp {
boolean isOn;
void turnOn() {
isOn = true;
System.out.println("Licht aan? " + isOn);
}
public static void main(String[] args) {
Lamp led = new Lamp();
led.turnOn();
}
}
Output
Licht aan? true
Dit patroon is handig voor kleine demonstraties of utility-klassen waar de hoofllogica binnen dezelfde klasse zit.
Java
- C++ klassen & objecten: praktische gids voor object-georiënteerd programmeren
- Java-variabelen en literals: een uitgebreide gids
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java abstracte klassen en methoden: een uitgebreide gids
- Java geneste en inner classes meesteren: typen, voorbeelden en best practices
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden