![]() |
![]() ![]() |
![]() |
![]()
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? :]
|
|
|
![]()
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.
|
|
|
![]()
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. |
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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.
|
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) 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? |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no ile razy mozna pisac: tak (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
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.
|
|
|
![]()
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) |
|
|
![]()
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.. :/
|
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 02:03 |