Υπερφόρτωση (Overloading)

Γενικά

Με την Υπερφόρτωση μπορούμε να έχουμε δύο μεθόδους με το ίδιο όνομα αλλά διαφορετικό αριθμό ή/και τύπο παραμέτρων.

Αυτό μπορεί να γίνει στην ίδια κλάση. Κλασικό παράδειγμα η υπρρφότωση των δημιουργών.

Παράδειγμα overloading με δημιουργούς

public class Circle {
    private int radius;
    private int x;
    private int y;

    public Circle() {
        this.x = 10;
        this.y = 10;
        this.radius = 20;
    }

    public Circle(int radius) {
        this.radius = radius;
    }

    public Circle(int radius, int x, int y) {
        this.radius = radius;
        this.x = x;
        this.y = y;
    }
}


public class Main {
    public static void main(String[] args) {
        // creates a circle with defaults
        Circle circle1 = new Circle();

        // creates a circle with R=50 and default center
        Circle circle2 = new Circle(50);

        // creates a circle with R=100, center(x, y) = (50, 70)
        Circle circle3 = new Circle(100, 50, 70);
    }
}

Παράδειγμα overloading με μέθοδο.

public class Graphics {
    public void draw(String text) {
    // draws the text
    }

    public void draw(Circle circle) {
    // draws the circle
    }

    public void draw(Rectangle rect) {
    // draws the rectangle
    }
}