Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Klasy nie działa dziedziczenie
kalibovers
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.02.2013

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


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. ?>


Ten post edytował kalibovers 10.02.2015, 09:23:13
Powód edycji: [phpion]: Poprawiłem bbcode.
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
kalibovers
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.02.2013

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


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

Ten post edytował kalibovers 10.02.2015, 09:36:32
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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ć.
Go to the top of the page
+Quote Post
Boshi
post
Post #5





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


Po drugie po co robisz coś takiego ?

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


Wystarczy
  1. $this->waga-=2;
Go to the top of the page
+Quote Post
kalibovers
post
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.02.2013

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


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 (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #7





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Robisz aplikację o sadownictwie?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Od kiedy to gruszka jest odmianą jabłka (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post

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: 15.09.2025 - 15:51