Błąd przy kompilacji kodu z dziedziczeniem klas

Błąd przy kompilacji kodu z dziedziczeniem klas
SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 20
0

Cześć, mam problem z dziedziczeniem z klasy:

Kopiuj
 public class BaseCharacter {
     private String name;
     private int health;
     
   public BaseCharacter(String name) {
        this.name = name;
        this.health = 10;
    }
    public void printName() {
        System.out.println(this.name);
    }
}

Napisałem taką klasę, chciałbym, żeby dziedziczyła z powyższej:

Kopiuj
 public class NPC extends BaseCharacter {
    private Boolean isPlayable = false;
}

Nie mogę jej skompilować, błąd jest następujący:

Kopiuj
constructor BaseCharacter in class BaseCharacter cannot be applied to given types;
required: java.lang.String; found: no arguments; reason: actual and formal argument lists differ in length

Rozumiem, że problem leży w tym, że konstruktor klasy, z której dziedziczy druga, potrzebuje argumentu w postaci stringa ale dlaczego jest to wyświetlone jako błąd w dziedziczącej klasie? Jak poprawnie to zakodować?
Będę wdzięczny za pomoc.

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

A jak masz tylko klasę BaseCharacter to dostajesz błąd? Nie dostajesz więc czemu po próbie dziedziczenia miałbyś tam nagle dostać?
Jak poprawnie to zakodować? Ale co? Bo jak chodzi o ten error to sam sobie odpowiedziałeś - dopisz konstrukt w NPC w którym wywołasz super(name).

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Każda klasa musi mieć konstruktor, skoro napisałeś klasę NPC bez żadnego konstruktora, to kompilator Javy dopisał konstruktor:

Kopiuj
public NPC(){
   super(); //wywołanie konstruktora z klasy bazowej BaseCharacter
}

Niestety w klasie BaseCharacter nie ma konstruktora bezargumentowego.
Masz dwa wyjścia: jedno podał @szweszwe, drugie to dopisać konstruktor bezargumentowy w klasie BaseCharacter.

SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 20
0

Dziękuję za pomoc, doczytałem co trzeba o konstruktorach, już działa tak jak powinno.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.