konstruktor klasy abstrakcyjnej

0

hej,
mam dwie klasy: A i B. A jest abstrakcyjna, B ja rozszerza:

public abstract class A{

  public A(String a){}

}
public class B extends A{
  public B(){}
}

Abstrakcyjna klasa A ma konstruktor, ktory dostaje Stringa. W klasie B dostaje error ze nie moze znalezc konstruktora klasy A. z kolei jesli w klasie B probuje go stworzyc:

public class B extends A{
public A(String a){}
}

to dostaje ze invalid method declaration-missing return statement. Przyznam szczerze ze nie wiem jak w klasie B utworzyc ten konstruktor klasy A (ktory musi byc stworzony bo w tym Stringu przekazuje wazna rzecz).

czy ktos z Was moglby mi z tym pomoc?

   pzdr,
         misty

dobra, mam. super()

0

Jeśli mamy klasę typu A rozszerza CośTam { ... } to przy wywołaniu new A( ... ) Java wywołuje najpierw konstruktor Object, potem po kolei dziedziczących klas, aż do konstruktora klasy A.

Dlatego trzeba explicite podać który konstruktor z klasy nadrzędnej ma się wykonać. I do tego jest metoda super( argumenty konstruktora ). Jeśli nie poda się super( ... ) to Java domyślnie spróbuje poszukać konstruktora nieprywatnego bezargumentowego czyli spróbuje dodać wywołanie super().

Jeśli w jakiejś klasie nie ma żadnego konstruktora to kompilator domyślnie dodaje pusty (chyba publiczny) konstruktor bezargumentowy.

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