Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klasy nie działa dziedziczenie
Forum PHP.pl > Forum > Przedszkole
kalibovers
Dałem extends zeby odziedziczył ugryzienie i zjedzenie po jablku jednak nie wyswietla nic . Gdzie popełniłem błąd ?
  1. <?php
  2. class jablko {
  3. var $kolor;
  4. var $waga;
  5. function jablko($jakie,$ilewazy)
  6. {
  7. $this->kolor = $jakie;
  8. $this->waga = $ilewazy;
  9. }
  10. function ugryz(){
  11. $this->waga--;
  12. }
  13. function zjedzone(){
  14. echo 'zjedzone!';
  15. }
  16. }
  17. $ojablko = new jablko('czerwone',10);
  18. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  19. $ojablko->ugryz();
  20. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  21. $ojablko->ugryz();
  22. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  23. $ojablko->ugryz();
  24. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  25. $ojablko->ugryz();
  26. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  27. $ojablko->ugryz();
  28. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  29. $ojablko->ugryz();
  30. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  31. $ojablko->ugryz();
  32. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  33. $ojablko->ugryz();
  34. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  35. $ojablko->ugryz();
  36. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  37. $ojablko->ugryz();
  38. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  39. $ojablko->zjedzone();
  40. echo ($jablko->zjedzone.''.$ojablko->kolor.'<br>')
  41.  
  42. class gruszka extends jablko {
  43.  
  44. {
  45.  
  46. $ogruszka = new gruszka('zolta',10);
  47. echo ($ogruszka->kolor.''.$ogruszka->waga.'<br>');
  48.  
  49.  
  50.  
  51. ?>
phpion
Jeżeli powyższy kod jest dokładnie takim, jaki napisałeś to masz 2 błędy składniowe. Gdzie? Włącz wyświetlanie błędów:
  1. ini_set('display_errors', 'on');

a zobaczysz o co chodzi. Po ich wyeliminowaniu kod działa prawidłowo.

Warto jednak zaznaczyć, że korzystasz z obiektowości z PHP4 (var, konstruktor jako nazwa klasy). Poczytaj jak tworzyć klasy w PHP5.
kalibovers
Nie wyświetla nic ;/

Mam jeszcze taki kod i na nim wyswietla błąd w 42 linijce a chce dodac kolejna kalse "gruszka" zeby tylko kolor i waga byly inne a wlasciwosci te same
  1. <?php
  2. class jablko {
  3. var $kolor;
  4. var $waga;
  5. function jablko($jakie,$ilewazy)
  6. {
  7. $this->kolor = $jakie;
  8. $this->waga = $ilewazy;
  9. }
  10. function ugryz(){
  11. $this->waga--;
  12. }
  13. function wiekszygryz(){
  14. $this->waga--;
  15. $this->waga--;
  16. }
  17. function zjedzone(){
  18. echo 'zjedzone!';
  19. }
  20. }
  21. $ojablko = new jablko('zielone',10);
  22. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  23. $ojablko->wiekszygryz();
  24. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  25. $ojablko->ugryz();
  26. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  27. $ojablko->ugryz();
  28. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  29. $ojablko->ugryz();
  30. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  31. $ojablko->ugryz();
  32. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  33. $ojablko->ugryz();
  34. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  35. $ojablko->ugryz();
  36. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  37. $ojablko->wiekszygryz();
  38. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  39. $ojablko->zjedzone();
  40. echo ($ojablko->kolor.''.$ojablko->zjedzone.'<br>')
  41.  
  42.  
  43.  
  44.  
  45.  
  46. ?>
  47.  

PS. Poprawiłem składnie na gorze ale nie wiem nadal jak dodac dziedziczenie

  1. <?php
  2. ini_set('display_errors', 'on');
  3. class jablko {
  4. var $kolor;
  5. var $waga;
  6. function jablko($jakie,$ilewazy)
  7. {
  8. $this->kolor = $jakie;
  9. $this->waga = $ilewazy;
  10. }
  11. function ugryz(){
  12. $this->waga--;
  13. }
  14. function wiekszygryz(){
  15. $this->waga--;
  16. $this->waga--;
  17. }
  18. function zjedzone(){
  19. echo 'zjedzone! ';
  20. }
  21. function jablko2(){
  22. echo 'jablko ';
  23. }
  24. function wypluj(){
  25. $this->waga++;
  26. }
  27. function gruszka(){
  28. echo 'gruszka ';
  29. }
  30. }
  31. $ojablko = new jablko('zielone',15);
  32. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  33. $ojablko->wiekszygryz();
  34. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  35. $ojablko->ugryz();
  36. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  37. $ojablko->ugryz();
  38. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  39. $ojablko->ugryz();
  40. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  41. $ojablko->wiekszygryz();
  42. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  43. $ojablko->wypluj();
  44. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  45. $ojablko->ugryz();
  46. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  47. $ojablko->wiekszygryz();
  48. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  49. $ojablko->wiekszygryz();
  50. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  51. $ojablko->wiekszygryz();
  52. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  53. $ojablko->ugryz();
  54. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  55. $ojablko->zjedzone();
  56. $ojablko->jablko2();
  57. echo ($ojablko->kolor.'<br>');
  58.  
  59. $ojablko = new jablko('zolta',16);
  60. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  61. $ojablko->wiekszygryz();
  62. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  63. $ojablko->wiekszygryz();
  64. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  65. $ojablko->wiekszygryz();
  66. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  67. $ojablko->wiekszygryz();
  68. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  69. $ojablko->wiekszygryz();
  70. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  71. $ojablko->wypluj();
  72. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  73. $ojablko->wiekszygryz();
  74. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  75. $ojablko->wiekszygryz();
  76. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  77. $ojablko->ugryz();
  78. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  79. $ojablko->ugryz();
  80. echo ($ojablko->kolor.''.$ojablko->waga.'<br>');
  81. $ojablko->zjedzone();
  82. $ojablko->gruszka();
  83. echo ($ojablko->kolor.'<br>');
  84.  
  85.  
  86. ?>


Takie cos mi zadziałało po prostu na koncu daje funkcje zmieniajaca nazwe na gruszka. Ale nadal mam problem ponieważ chciałbym wrocić do zmiennej koloru czyi $kolor = czerwony tylko, ze jak wroce to nie wyswietla mi nic. A wage chce jakos zostawic
phpion
Chyba mylisz pojęcie dziedziczenia. Obiekty dziedziczą po sobie składowe (ale nie ich wartości!) oraz metody. Jeśli chciałbyś by każdy obiekt danej klasy (lub podklasy) miał w danej składowej taką samą (lub raczej wspólną) wartość to musisz użyć składowej statycznej (static). Opisz może słownie co chcesz osiągnąć bo na podstawie kodu to dość ciężko się domyśleć.
Boshi
Po drugie po co robisz coś takiego ?

  1. function wiekszygryz(){
  2. $this->waga--;
  3. $this->waga--;
  4. }


Wystarczy
  1. $this->waga-=2;
kalibovers
No własnie nie wiedziałem jak dlatego podwójnie dałem ale dzieki za info jak na razie poprawiłem błedy i dodałem $this->kolor i działa tongue.gif
b4rt3kk
Robisz aplikację o sadownictwie?
Pyton_000
Od kiedy to gruszka jest odmianą jabłka blink.gif Ominęła mnie jakaś nowelizacja z UE w sprawie kategoryzacji i przynależności?

Poczytaj czym jest obiektowość i dziedziczenie.
http://webmastah.pl/jak-programowac-obiektowo-cz-1-wstep/
Siuup i do przodu
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.