Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OOP] Dziedziczenie pól.
Forum PHP.pl > Forum > Przedszkole
Crozin
Witajcie,
napotkałem dziś na dziwny "błąd", a mianowicie:
  1. <?php
  2.  
  3. class A{
  4. protected $FieldA='wartosc pola a';
  5. protected $FieldB;
  6. //...
  7. private function Fun(){
  8. $this->FieldB='ala ma kota';
  9. }
  10. }
  11.  
  12. class B extends A{
  13. public function __constrtuc(){
  14. print_r(get_class_vars(__CLASS__));
  15. }
  16. }
  17.  
  18. ?>

Zwraca:
Kod
Array
(
    [FieldA] => wartosc pola a
    [FieldB] =>
)

Dlaczego dziedziczone są jedynie te wartości pól, które zostały zdeklarowane razem z polem?
PS. oczywiscie A::Fun() jest wykonywana przed konstruktorem klasy B.
bartek00
Witam

"oczywiscie A::Fun() jest wykonywana przed konstruktorem klasy B."

Nie widze zeby gdzies byla wywolywana funkcja A:fun(). Poza tym jest ona prywatna wiec w klasie B jej nie wywolasz. Zadziala jesli w konstruktorze A wywolasz fun(), a konstruktorze B wywolasz parent:__construct.

Pozdrawiam
mike
Cytat
Dlaczego dziedziczone są jedynie te wartości pól, które zostały zdeklarowane razem z polem?
Dziedziczone są pola. I nic więcej.
Jeśli pole ma wartość to jest dziedziczone z wartością, jeśli nie to nie.

Ustawienie wartości później nic nie wnosi. Nie zmienisz tego.
Możesz co najwyżej wewnątrz klasy pochodnej nadać wartości polom dziedziczonym.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.