Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak odwołać się do właściwości statycznej klasy dziedziczącej?
Martio
post
Post #1





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


  1. <?php
  2. abstract class A {
  3. protected static $test = 'a';
  4.  
  5. public function __construct() {
  6. echo self::$test;
  7. }
  8. }
  9. class B extends A {
  10. protected static $test = 'b';
  11. }
  12.  
  13. $b = new B(); // result: a
  14. ?>


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
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
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: 29.12.2025 - 17:45