![]() |
![]() |
![]()
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ź. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Metody prywatne nie są dziedziczone w tym przypadku. Zauważ, że nie przeciążyłeś metody accesspryw(), która jest metodą klasy A, więc ma prawo dostępu do prywatnej metody pryw(). Gdybyś zmienił dostęp do metody pryw() na chroniony, to by była dostępna bezpośrednio z wnętrza klasy B. Sytuacja jest jak najbardziej prawidłowa i zmienne są objęte tymi samymi prawami.
Ogólnie jest tak: Private - widoczna tylko z wnętrza klasy definiującej. Protected - widoczna z wnętrza klasy definiującej i dziedziczących. Public - widoczna z każdego miejsca. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 09:38 |