Błąd przy kompilacji kodu z dziedziczeniem klas

0

Cześć, mam problem z dziedziczeniem z klasy:

 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:

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

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

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.

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).

0

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

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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1