Προγραμματισμός ΙΙ: Κληρονομικότητα, Αφηρημένες Κλάσεις και Διεπαφές

Προγραμματισμός ΙΙ

Κληρονομικότητα, Αφηρημένες κλάσεις, Διεπαφές

Κληρονομικότητα

class SubClass extends SuperClass {...}

Παράδειγμα

class Triangle {

    public String whoIAm() { return "I am a triangle"; }
}

class EquilateralTriangle extends Triangle {

    public String whoIReallyAm() { return "I am equilateral"; }
}
public class Test {
    EquilateralTriangle equilateral = new EquilateralTriangle();
    System.out.println(equilateral.whoIAm())
    System.out.println(equilateral.whoIReallyAm());
}

Override

Παράδειγμα

class Triangle {

    public String whoIAm() { return "I am a triangle"; }
}

class EquilateralTriangle extends Triangle {

    @Overrride
    public String whοΙAm() { return "I am an equilateral triangle"; }
}

super

Παράδειγμα

class Triangle {

    public String whoIAm() { return "I am a triangle"; }
}

class EquilateralTriangle extends Triangle {

    @Override
    public String whοΙAm() {
        return super.whoIAm() + " and an equilateral one too";
    }
}

Παράδειγμα(2)

class Triangle {

    private int base;
    private int height;

    public Triangle(int base, int height) {
        // super();   <-- Εννοείται
        this.base = base;
        this.height = height;
    }
}

class EquilateralTriangle extends Triangle {

    public EquilateralTriangle(int base, int height) {
        super(base, height);  // Εδω η κλήση της super είναι απαραίτητη
    }
}

Αφηρημένες κλάσεις

Αφηρημένες μέθοδοι

Παράδειγμα

abstract class Shape {

    private int numberOfVertices;

    public Shape(int numberOfVertices) {
        this.numberOfVertices = numberOfVertices;
    }

    public int getNumberOfVertices() {
        return this.numberOfVertices;
    }

    public abstract double area();
}

Παράδειγμα(συνέχεια)

class triangle extends Shape {

    private int base;
    private int height;

    public Triangle(int base, int height) {
        super(3)
        this.base = base;
        this.height = height;
    }

    @Override
    public double area() {
        return (base * height) / 2.0;
    }
}

Παράδειγμα(συνέχεια)

class square extends Shape {

    private int edge;

    public Square(int edge) {
        super(4);
        this.edge = edge;
    }

    @Override
    public double area() {
        return edge * edge;
    }
}

Διεπαφές

Διεπαφές(2)

Παράδειγμα

abstract class Shape {

    private int numberOfVertices;

    public Shape(int numberOfVertices) {
        this.numberOfVertices = numberOfVertices;
    }

    public int getNumberOfVertices() {
        return numberOfVertices;
    }
}

Παράδειγμα(συνέχεια)

interface CalculableArea() {

    double area();
}

Παράδειγμα(συνέχεια)

public class Triangle extends Shape implements CalculableArea {

    private int base;
    private int height;

    public Triangle(int base, int height) {
        super(3);
        this.base = base;
        this.height = height;
    }

    @Override
    public double area() {
        return (base * height) / 2.0;
    }
}

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.