Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Parametr w metodzie klasy abstrakcyjnej
Forum PHP.pl > Forum > Przedszkole
finito
  1. abstract class A{
  2. abstract public function method();
  3. }
  4.  
  5. class B extends A{
  6. public function method($b = false){}//dozwolone
  7. }
  8.  
  9. class C extends A{
  10. public function method($b){}//niedozwolone!
  11. }


Piszą na wortalu, że deklaracja abstrakcyjnej metody musi mieć takie same parametry co definicja tej metody.

Ale w tym przykładzie:
  1. abstract class A{
  2. abstract public function method();
  3. }

Metoda method nie ma żadnych parametrów.
Dlaczego więc to:
  1. class B extends A{
  2. public function method($b = false){}//dozwolone
  3. }

Jest prawidłowe? Przecież czy true czy false, parametr występuje.
Crozin
1. PHP jest trochę głupie, bo żaden wariant poza metod() nie powinien być dozwolony w tym przypadku.
2. Zapewne jest to dozwolone ponieważ w obu przypadkach możesz wywołać method() - nie musisz niczego przekazywać.
3. Nie powinieneś nigdy z czegoś takiego korzystać, nawet jeżeli języka na to pozwala.
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.