Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziedziczenie i zmienne statyczne
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Mój "problem" dotyczy programowania obiektowego. W moim przypadku chodzi o javę, ale myślę, że to dotyczy ogólnie programowania obiektowego.
Dajmy na to, mam klasę abstrakcyjną typu wielokąt:

  1. abstract class wielokąt{
  2. private int liczbaKątów;
  3.  
  4. public int getLiczbaKątów() {return liczbaKątów; }
  5. public int setLiczbaKątów(int lk) { liczbaKątów = lk; }
  6. }


Następnie robię sobie klasę trójkąt:
  1. class trójkąt extend wielokąt{
  2.  
  3. trójkąt()//w php będzie to __construct()
  4. {
  5. setLiczbaKątów(3);
  6. }
  7.  
  8. }
  9.  


W analogiczny sposób robię sobie klasy czworokąt, pięciokąt itd.

Następnie w kodzie mam wiele instancji tych klas (trójkątów, czworokątów itd.)
Okazuje się, że mój kod jest nieco pamięciożerny, bo liczba kątów dla klasy trójkąt zawsze będzie równa 3, a ja tworzę dla każdej instancji klasy osobną zmienną.

Niby z pomocą przychodzą zmienne statyczne, ale jeśli takową zadeklaruję w klasie wielokąt, to liczba kątów dla trójkąta i czworokąta będzie taka sama.
Muszę więc zadeklarować tą zmienną statyczna w klasach potomnych, czyli w trójkącie, czworokącie,...,n-kącie. Ale wtedy moje metody zdefiniowane w klasie wielokąt nie będą działały, bo przecież w klasie wielokąt nie ma zmiennej o nazwie liczbaKątów.
Ratunkiem jest stworzenie tych metod w klasach potomnych, a w klasie nadrzędnej zostawić tylko "abstrakcyjne nagłówki".
Jednak... nie bardzo mi to pasuje, bo każda z tych metod (setter i getter) bedzie wyglądał tak samo. Nie chcę więc powielać kodu.

jak temu zaradzić ?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 04:40