Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> czy to jakis bug ?, php5 abstract class
a79rtur
post
Post #1





Grupa: Zarejestrowani
Postów: 331
Pomógł: 1
Dołączył: 23.05.2004
Skąd: Tarnów/Londyn

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


witam
mam następujacą sytuacje:

jest klasa abstrakcyjna :

abstract class lokal()
i jej klasa potomna
class lokal_xml extends lokal()

w klasie potomnej mam zdefiniowana metode
public function createXML()

a w konstruntorze klasy potomnej wywoluje konstruktor rodzica :
parent::construct($lokal_id);

dziwna wydaje mi sie rzecz, ze jesli do konstruktora klasy rodzica, dodam wywolanie
$this->createXML(), to php nie zglasza zadnego bledu. wydaje mi sie ze powinno, poniewaz wywoluje metode, ktora jest zadeklarowana i zdefiniowana dopiero w klasie potomniej. jesli sie myle to prosze o wytlumaczenie o co chodzi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Cytat(Cysiaczek @ 11.12.2006, 19:06:37 ) *
Kiedy zostanie utworzona instancja klasy, nie ma podziału na klasę bazową i potomną - mamy jeden obiekt, który zawiera wszystkie metody z wyjątkiem metod prywatnych klasy bazowej.


Mylisz się. Wystarczy jedno małe doświadczenie:

  1. <?php
  2. abstract class AbstractClassA
  3. {
  4. public function method()
  5. {
  6. print __METHOD__;
  7. }
  8. }
  9.  
  10. class ClassB extends AbstractClassA
  11. {}
  12.  
  13. $b = new ClassB();
  14. $b->method();
  15. ?>

Wyświetli AbstractClassA::method, a nie - wg tego co napisałeś - ClassB::method.

Ten post edytował LBO 24.12.2006, 02:58:59
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: 14.10.2025 - 03:52