Dziedziczenie

0

Mam w klasie nadrzędnej pole zliczające ilość obiektów :
private static int count;
i pole które przyporządkowuje obiektowi numer:
private int currNr = ++count;
oraz metody:
public int getNr() {
return currNr;
}
public static int getCount() {
return count;

Mam dwie klasy dziedziczące Bus i Car i w klasie Bus chciałabym wykorzystać metodę getNr(), tak żeby w programie testującym niezależnie od tego w jakiej kolejności będę tworzyć obiekty klas pochodnych np w takiej:
Car c1 = new Car(...);
Bus b1 = new Bus(..);
Bus b2 = new Bus(...);
to żeby metoda
public String toString() {
return "Pojazd " + getNr() }
z klasy Bus numerowała tylko obiekty tej klasy (tzn żeby obiekt b1 miał numer 1 a nie 2);
Zastanawiałam się czy można to jakoś zrobić czy trzeba tworzyć nową metodę zliczającą tylko obiekty w klasie Bus.

0

Jeśli liczniki mają być niezależne to nie mogą dziedziczyć pola.

0

Lepiej zrób fabryki do tych obiektów. Czyli np klasa CarFactory, która posiada metodę makeCar() i licznik stworzonych samochodów. Sam konstruktor klasy Car powinien być wtedy prywatny.

PS:
Statycznych pól i metod nie da się dziedziczyć. Statyczne pola i metody to dziwne potworki, których powinno się w miarę możliwości unikać.

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