Sobes.tech
Junior

Czy można nadpisywać konstruktory w Java?

sobes.tech AI

Odpowiedź od AI

Nie, w Javie konstruktory nie są nadpisywane (overriding). Nadpisywanie odnosi się do metod klasy potomnej, które mają tę samą sygnaturę (nazwa, typ zwracany i lista parametrów) co metoda w klasie nadrzędnej.

Zamiast nadpisywania, w Javie używa się przeciążania (overloading) konstruktorów. Oznacza to, że w jednej klasie może być kilka konstruktorów o tej samej nazwie, ale z różnymi listami parametrów (różna liczba, typy lub kolejność).

Klasa potomna może wywołać konstruktory klasy nadrzędnej, używając słowa kluczowego super(...).

Przykład przeciążania konstruktorów:

class MyClass {
    int value;
    String name;

    // Konstruktor domyślny
    public MyClass() {
        this.value = 0;
        this.name = "default";
        // Wywołanie innego konstruktora za pomocą this()
        this(0, "default"); 
    }

    // Przeciążony konstruktor z jednym parametrem
    public MyClass(int value) {
        this.value = value;
        this.name = "default";
    }

    // Przeciążony konstruktor z dwoma parametrami
    public MyClass(int value, String name) {
        this.value = value;
        this.name = name;
    }
}