Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nauka Klas - rozszerzenie klasy
Forum PHP.pl > Forum > Przedszkole
d4ng
Witajcie, dzisiaj napotkałem opór przy klasach.. Otóż po dopisaniu rozszerzenia klasy (czyli class Bank extends Students) powinny pokazać się numery PESEL ale coś gdzieś nie pykło... tylko gdzie? Z góry dziękuje za pomoc!

Jan Kowalski
12345678901
Wiek studenta to: 24 lata
Nr to: Numer PESEL to:

Kod:

  1. <?php
  2. //################### KLASA - TWORZENIE / KORZYSTANIE #############################
  3.  
  4. class Students {
  5.  
  6. // zmienna członkowska / środowiskowa
  7. public $studentName;
  8. private $peselNumber;
  9.  
  10. // metoda (gdyby nie "public" byłaby to zwykła funkcja)
  11. public function getStudentName(){
  12.  
  13. // klaso Students zwróc mi wartość zmienneij czlonkowskiej $studentName
  14. return $this->studentName;
  15. }
  16.  
  17. public function getPeselNumber(){
  18. return $this->peselNumber;
  19. }
  20.  
  21. // funkcja pełni role "setera" czyli umozliwia dostep do zmiennej członkowskiej $peselNumber
  22. public function setPeselNumber($pesel){
  23. $this->peselNumber = $pesel;
  24. }
  25.  
  26. }
  27.  
  28. $obiekt = new Students; // zmienna = nowy egzemplarz klasy
  29. $obiekt->studentName = "Jan Kowalski"; // zmienna -> odniesienie się do zmiennej członkowskiej studentsName
  30. // czyli elementu klasy Students i przypisanie jej wartości "Nr alb..."
  31. echo $obiekt->getStudentName(); // odwołanie sie przez zmienną $obiekt i wywołaliśmy metode getStudentName() która zwraca
  32. // zmienną członkowską $studentName
  33. echo "<br/>";
  34. $obiekt->setPeselNumber(12345678901);
  35. echo $obiekt->getPeselNumber();
  36.  
  37. //################### KLASA Z METODAMI STATYCZNYMI #############################
  38.  
  39. class Students2 {
  40.  
  41. // zmienna członkowska / środowiskowa
  42. static public $studentAge;
  43.  
  44. // implementacja metod (zrwaca nam to co przechowuje zmienna $studentAge)
  45. public function getStudentAge(){
  46. return self::$studentAge; //self używamy tylko w klasie w której jesteśmy, jeżeli chcemy odwołac się do innych używamy parent
  47. }
  48.  
  49. // implementacja metod statycznych
  50. static public function setStudentAgeStatic($age){
  51. self::$studentAge = $age;
  52. }
  53.  
  54. }
  55.  
  56. echo "<br/>";
  57. Students2::$studentAge = 24;
  58. echo "Wiek studenta to: ".Students2::$studentAge." lata<br/>";
  59.  
  60. //################### ROZSZERZEANIE KLASY O ZAWARTOSC INNEJ KLASY #############################
  61.  
  62. class Bank extends Students {
  63.  
  64. public function getPeselNumberFn(){
  65. return "Numer PESEL to: " .parent::getPeselNumber();
  66. }
  67.  
  68. public function getPeselNumberVar(){
  69. return "Numer PESEL to:" .$this->peselNumber;
  70. }
  71. }
  72.  
  73. $obiekt = new Bank;
  74. $obiekt->peselNumber = 12345678901;
  75. echo "Nr to: " .$obiekt->getPeselNumberFn();
  76.  
  77. ?>
Gość
private $peselNumber; Musisz dac setter / ustawić jako public
r4xz
  1. class Bank extends Students {...}

Przykład błędnego dziedziczenia, swoją drogą zrozumiałem go jako: student umrze to bank dziedziczy pieniądze... haha.gif

popatrz na coś innego (poprawnego):
  1. class truck extends car {...}

  1. class apple extends fruit {...}

  1. class employee extends person {...}


PS daje przykłady, ponieważ kiepsko mi idzie tłumaczenie smile.gif
d4ng
Cytat(Gość @ 10.09.2013, 21:07:55 ) *
private $peselNumber; Musisz dac setter / ustawić jako public


dzieki, poprawiłem...

  1. class Bank extends Students {
  2.  
  3. public function getPeselNumberFn(){
  4. return "Numer PESEL to: " .parent::getPeselNumber();
  5. }
  6.  
  7. public function getPeselNumberVar(){
  8. return "Numer PESEL to:" .$this->peselNumber;
  9. }
  10. }
  11.  
  12. $obiekt = new Bank;
  13. $obiekt->setPeselNumber(12345678901);
  14. echo "Nr to: " .$obiekt->getPeselNumberFn();
  15.  
  16. ?>


Jan Kowalski
12345678901
Wiek studenta to: 24 lata
Nr to: Numer PESEL to: 12345678901

mam teraz problem z wyświetleniem wartości przy "Nr to:"

heheh r4xz ciekawe podejście jednak nazwy klas sa przykładowe i służą bardziej do nauki a niżeli jakiegoś projektu. A gdzie jest ważny nasz pesel jak nie w banku? smile.gif
r4xz
Cytat(d4ng @ 11.09.2013, 16:42:58 ) *
heheh r4xz ciekawe podejście jednak nazwy klas sa przykładowe i służą bardziej do nauki a niżeli jakiegoś projektu. A gdzie jest ważny nasz pesel jak nie w banku? smile.gif

Może i tak, ale takie przykłady są niepoprawne, a nauka na złych przykładach rodzi złe nawyki smile.gif

odsyłam do lektury: http://phpro.org/tutorials/Object-Oriented...with-PHP.html#5
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.