Direct naar de hoofdinhoud
Module 2 · Les 1 van 23/14 in de cursus~12 min
Modulelessen (1/2)

Klassen en objecten

Java is een taal gericht op Object-Oriented Programming (OOP). In OOP modelleren we de echte wereld met behulp van objecten. Een object heeft status (gegevens) en gedrag (acties).

Klassen en objecten

  • Klasse: het is een blauwdruk (of sjabloon) die de eigenschappen en het gedrag van een type object definieert.
  • Object: het is een concrete instantie gemaakt op basis van een klasse.

Als Car bijvoorbeeld de klasse is, is uw auto in de garage het daadwerkelijke object.

Instantievelden en constructors

De gegevens binnen een klasse worden instancevelden (of attributen) genoemd. Om de toestand van een object op het moment van creatie te initialiseren, gebruiken we een speciale methode genaamd constructor.

Een constructor heeft dezelfde naam als de klasse en heeft geen retourtype (zelfs niet void).

Java
class Dog {
    // Instance fields
    String name;
    int age;

    // Constructor
    public Dog(String name, int age) {
        this.name = name; // 'this' refers to the current object's field
        this.age = age;
    }
}

Een object maken met new

Om een ​​object in het geheugen te maken, gebruiken we het sleutelwoord new gevolgd door de klassenconstructor:

Java
public class Main {
    public static void main(String[] args) {
        // Creating a Dog object
        Dog myDog = new Dog("Fido", 3);

        // Accessing fields
        System.out.println(myDog.name + " is " + myDog.age + " years old.");
    }
}

De this referentie

Het sleutelwoord this in Java verwijst naar het huidige object waarop de constructor of een methode wordt uitgevoerd. Het wordt voornamelijk gebruikt om dubbelzinnigheid te voorkomen wanneer constructorparameters dezelfde naam hebben als de instantievelden van het object (variabele schaduw):

Java
class User {
    String username;

    public User(String username) {
        this.username = username; // this.username is the instance field, username is the parameter
    }
}

Geheugentoewijzing: stapel versus heap

Begrijpen hoe Java geheugen toewijst is essentieel:

  1. Stack: het is een snel en georganiseerd geheugengebied waar primitieve variabelen en objectreferenties (geheugenadressen) lokaal voor methoden worden opgeslagen.
  2. Heap: het is een groter en dynamisch geheugengebied waar feitelijke objecten worden toegewezen (met behulp van het trefwoord new).

Wanneer we Dog myDog = new Dog("Fido", 3); verklaren:

  • De referentie myDog is aangemaakt op de Stack.
  • Het daadwerkelijke Dog object met zijn gegevens wordt aangemaakt op de Heap.
  • De variabele myDog verwijst naar de locatie van het object op de Heap.

Probeer het zelf

Oefening#java.m2.l1.e1
Pogingen: 0Laden…

Voltooi de klasse Person door de veldnaam en een geschikte constructor toe te voegen. Maak vervolgens in de hoofdmethode een Person-object met de naam p met de naam Alice.

Editor laden…
Toon hint

Schrijf `String naam;` binnen de klasse, declareer de constructor `public Person(String name) { this.name = naam; }` en instantiëer het met `new Person('Alice')`.

Oplossing beschikbaar na 3 pogingen

Oefening#java.m2.l1.e2
Pogingen: 0Laden…

Maak een Book-klasse met de velden titel (String) en pagina's (int), een volledige constructor, en instantiëer in de hoofdmethode een boek met de naam b met de titel Moby Dick en 600 pagina's.

Editor laden…
Toon hint

Vergeet niet om beide velden in Book te definiëren, ze in de constructor toe te wijzen met `this.title = title;` en `this.pages = pagina's;`, en `new Book('Moby Dick', 600)` te gebruiken.

Oplossing beschikbaar na 3 pogingen

Oefening#java.m2.l1.e3
Pogingen: 0Laden…

Maak een productklasse met de veldnaam (String) en prijs (dubbel), en een constructor die beide velden initialiseert. Maak in de hoofdmethode een Product-object met de naam p met de naam Laptop en de prijs 999,99.

Editor laden…
Toon hint

Declareer de velden 'String name;' en 'double price;' in Product, wijs ze in de constructor toe met 'this.name = name;' en 'this.price = price;', en maak tenslotte het object in de main-methode.

Oplossing beschikbaar na 3 pogingen