Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziedziczenie klas
Forum PHP.pl > Forum > PHP
Wojteq
Witam.

Załóżmy że mam klasę "A"
  1. <?php
  2. class A
  3. {
  4.    function funkcja()
  5.    {
  6.       echo 'A';
  7.    }
  8.  
  9.    function wyswietl()
  10.    {
  11.        $this->funkcja();
  12.    }
  13. }
  14. ?>

i klasę "B", która dziedziczy od klasy "A" zamieniająć funkję funkcja() na nową.
  1. <?php
  2. class B extends A
  3. {
  4.    function funkcja()
  5.    {
  6.       echo 'B';
  7.    }
  8. }
  9. ?>

oraz kod tworzący nowy egzemplarz klasy "B" i wykonujący funkcję funkcja()

  1. <?php
  2. $x = new B();
  3. $x->wyswietl();
  4. ?>


Efektem jest wyświetlenie się litery A. Jak zrobić, aby poprzez wykonanie tego kodu wykonana została nowa funkcja a nie stara (czyli wyświetlenie się litery B)?
NuLL
Ja tu php 5 nie widze więc przenoszę.
TomASS
Pewnie, że nie ma tutaj kszty php 5 tongue.gif winksmiley.jpg

Takie coś wyświetla B
  1. <?php
  2.  
  3. class A{
  4.    function funkcja(){
  5.       echo 'A';
  6.    }
  7.  
  8.    function wyswietl(){
  9.        $this->funkcja();
  10.    }
  11. }
  12.  
  13. class B extends A{
  14.    function funkcja(){
  15.       echo 'B';
  16.    }
  17. }
  18.  
  19. $x = new B();
  20. $x->funkcja();
  21.  
  22. ?>


Nie wiem w czym leży problem bo u mnie działa tak jak sobie życzysz.
Możesz też:
  1. <?php
  2.  
  3. class A{
  4.    function funkcja(){
  5.       echo 'A';
  6.    }
  7. }
  8.  
  9. class B extends A{
  10.    function funkcja(){
  11.       echo 'B';
  12.    }
  13. }
  14.  
  15. $x = new B();
  16. $x->funkcja();
  17.  
  18. ?>


A taka dobra rada (niezwiązana z tematem) - poczytaj o enkapsulacji.
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.