![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zablokowani Postów: 167 Pomógł: 2 Dołączył: 15.02.2004 Ostrzeżenie: (30%) ![]() ![]() |
Dlaczego dziedzicząc po klasie A konstruktor wyświetla mi wartość właściwości statycznej klasy A, a nie klasy B, jak chciałbym? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Dzieje się tak dlatego, że konstruktor klasy A używa słowa kluczowego self, które wskazuje na właściwość tej klasy, a nie obiektu. Dla konstruktora klasy A nie nastąpiło przesłonięcie $test. Nie odczytasz w ten sposób nic z klasy potomnej, chyba, że w kontekście obiektu.
Pozdrawiam Ten post edytował Cysiaczek 20.01.2007, 13:04:28 |
|
|
![]()
Post
#3
|
|
Grupa: Zablokowani Postów: 167 Pomógł: 2 Dołączył: 15.02.2004 Ostrzeżenie: (30%) ![]() ![]() |
W sumie gdyby zamiast statycznej użyć właściwości chronionej, to odwołujesz się słowem $this, a więc wskazujesz również na klasę bazową, a mimo to po dziedziczeniu zwracasz wartość klasy dziedziczącej, a nie bazowej.
Zerknij na kod. Moim zdaniem dziedziczenie statycznych właściwości błędnie się zachowuje. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Nie. słówko self w połączeniu ze static oznacza kontekst aktualnej klasy, nie obiektu. Twój drugi przykład odnosi się do kontekstu obiektu klasy (odcisku klasy) i dlatego zachowuje się inaczej. Dzieje się tak dlatego, że właściwość zostaje przesłonięta.
Pozdrawiam. |
|
|
![]()
Post
#5
|
|
Grupa: Zablokowani Postów: 167 Pomógł: 2 Dołączył: 15.02.2004 Ostrzeżenie: (30%) ![]() ![]() |
A więc nie mogę się odwołać do jakiejkolwiek właściwości klasy dziedziczącej w metodzie statycznej klasy bazowej?
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Owszem, możesz, ale tylko w kontekście obiektu. Przyjmij jako regułę to, że pisze się tak, żeby nie korzystać z właściwości statycznych : ) Korzystanie z tego jest niebezpieczne. Patrz:
Zmieniłeś typ w jednym obiekcie, a drugi już nie działa. Nie powinno się stosować składowych statycznych, a przynajmniej bardzo uważać. Pozdrawiam. Ten post edytował Cysiaczek 20.01.2007, 15:41:59 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 16:33 |