Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziedziczenie., private, public...
Milczar
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.12.2005

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


Witam.
Mam klase, która ma metody:
Kod
class A{
    private function pryw()
    {
      print("<br>PRYWATNA<br>");
    }

    public function accesspryw()
    {
      $this->pryw();
    }
}

oraz ma inne metody publiczne. Metody accesspryw() potrzebuje by korzystac z metody pryw() wywolujac ją z obiektu klasy A.
Kolejna klasa 'B' dziedziczy po klasie A.
Kod
class B extends A {
//i jakies inne metody klasy B
}

Pytanie następujące: Czy klasa B będzie miała dostęp do metody pryw() z klasy A (poprzez metode accesspryw() )? Chyba nie powinna jej dziedziczyć po klasie A bo w klasie A metoda pryw() jest prywatna, tak? Wywołanie accesspryw() z obiektu klasy B powinno dac (błąd dostępu do metody prywatnej/błąd niezdefiniowanej metody)?

Pozdrawiam i z góry dzięki za odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Po co cytujesz CALY post ktory znadjude sie TUZ NAD twoim?


Cytat
3 Jeśli chodzi o zmienne to to jest wlasnie dla mnie logiczne. Private jest niewidoczne dla potomka(...)

I kropka -- to co robia metody dostepowe to inna sprawa.
Metody prywatne nie sa dostepne dla potomkow, publiczne/chronione sa - i znow kropka. To do czego te metody sie odwoluja (do prywatnej metody nadklasy) to inna sprawa.


  1. <?php
  2. class A{
  3.  private function pryw()
  4.  {
  5.  print("<br>PRYWATNA<br>");
  6.  }
  7.  
  8.  public function accesspryw()
  9.  {
  10.  $this->pryw();
  11.  }
  12. }
  13.  
  14. class B extends A {
  15. }
  16.  
  17. $b = new B();
  18. $b->accesspryw(); // jako ze nie przedefiniowales jej w klasie B to ta metoda jest wywolywana
  19. // z poziomu klasy A (polimorfizm) wiec na dostep do prywatnej metody klasy A (pryw())
  20.  
  21. ?>


tyle
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 18:56