![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
W interfejsach można używać tylko metod typu public. A jak sobie poradzić z problemem, kiedy chcemy, żeby dana klasa implementowała pewien interfejs a jednocześnie część jej metod była prywatna? :]
-------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
klasa moze implementowac pewien interfejs, i dodatkowo moze miec swoje inne metody, ktore moga byc prywatne.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
klasa moze implementowac pewien interfejs, i dodatkowo moze miec swoje inne metody, ktore moga byc prywatne. Nie rozumiemy się. Mam np taki kod:
Chciałbym aby każda klasa, która implementuje interface B zawierała metodę a i b i aby te metody były prywatne. -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no ja ci napisalem, ze private to mozesz miec tylko w swojej klasie. moze dookola to napisalem, ale napisalem
![]() Masz: http://pl.php.net/manual/pl/language.oop5.interfaces.php Cytat All methods declared in an interface must be public, this is the nature of an interface.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
no ja ci napisalem, ze private to mozesz miec tylko w swojej klasie. moze dookola to napisalem, ale napisalem ![]() Masz: http://pl.php.net/manual/pl/language.oop5.interfaces.php Czyli jeśli chcemy być pewni, że dana klasa będzie zawierała wszystkie potrzebne metody, musi implementować dany interface i jednocześnie te metody skazane są na bycie publicznymi? -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no ile razy mozna pisac: tak
![]() Cytat this is the nature of an interface. jak chcesz miec prywatne metody, definiuj zamiast interface albo klasy abstrakcyjne, albo zwykle klasy i dziedzic po nich.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Interface to zbior metod ktorych uzywac moga obiekty INNYCH klas, a zeby mogly ich uzywac to te metody musza byc publiczne. Inne zakresy widocznosci sa zupelnie bez sensu.
J4r0d: pobaw sie interfejsami w Javie, tam one maja dopiero sens, z uwagi na typowanie zmiennych. W php 10 klas moze miec metode blah(), nie implementowac zadnego wspolnego interfejsu i takie cos zadziala: $someObj->blah(); // bez wzgledu na ktorej klasy obiektem jest $someObj (tzn. duck typing) -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
W klasie abstrakcyjnej też nie można używać prywatnych metod. Dlatego, że prywatne metody nie mogą być dziedziczone? Ale przecież, jeśli w klasie abstrakcyjnej jest definicja prywatnej metody a my w klasie dziedziczącej zaimplementujemy tą metodę to powinna być nadpisana.. :/
-------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Metoda prywatna jest.... prywatna :-) Oznacza zatem, że nie podlega dziedziczeniu. Chcesz dziedziczyć metoda ale jednocześnie odciąć jej dostęp do świata zewnętrznego to stosuj protected.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 08:18 |