Skip to content

Instantly share code, notes, and snippets.

@RobinMalfait
Created February 25, 2015 21:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RobinMalfait/9a90c74bfc91a65142cd to your computer and use it in GitHub Desktop.
Save RobinMalfait/9a90c74bfc91a65142cd to your computer and use it in GitHub Desktop.

OO Programmeren II

OO Paradigm

  • Abstractie - "klas":
    • "domein"-klasse
    • "ui"-klassen
  • Inkapseling => Private
  • Overerving => "her"gebruik van code. Via extends
  • Polymorfisme
    • Meerdere uitvoeringsvormen voor eenzelfde methode

Subklasse (this) extends Superklasse (super)

class BMW extends Car {
    // Code
}

Superklasse = generalisatie

Subklasse = specialisatie

In java kan maar van 1 klasse geërfd worden!

Type Visibility klasse Package Subklasse Wereld
private -
public +
protected #
-  

final hiermee kan je constanten definiëren.

final int X = 6;                     // Waarde
final Student S = new Student(...);  // Adres

finalize() methode, deze methode wordt aangeroepen door de garbage collector bij het verwijderen van een object.

Overerving / Polymorfisme

Voorbeelden:

public abstract class Vorm {
    public abstract void teken();
}

public class Vierkant extends Vorm {
    private int zijde;

    public void teken() { ... }
}

public class Driehoek extends Vorm {
    private int hoogte;
    private int breedte;

    public void teken() { ... }
}

public class Cirkel extends Vorm {
    private int straal;
    private int x;
    private int y;

    public void teken() { ... }

    public int getStraal() { ... }
}

Als je een abstracte methode niet overschrijft in je sub-klasse. Dan blijft deze sub-klasse ook abstract.

Vorm vormen[] = new Vormen[10];

vormen[0] = new Vierkant(5);
vormen[1] = new Driehoek(2, 3);
vormen[2] = new Cirkel(10, 50, 50);

...

for (Vorm vorm : vormen)
{
    vorm.teken();
}

Door middel van vormen[i] instanceof Cirkel kan je perfect weten welke Subklasse je object is.

Casting

Vorm v = new Cirkel(); // (Automatic) Upcasting

Cirkel c = (Cirkel) v; // Downcasting

Abstracte klassen dienen om van te erven. Wil je niet meer erven van een klasse dan kan je die klasse final declareren.

Algemeen kan je attributen, klassen en methodes final declareren.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment