Czym są publiczne, prywatne i chronione w programowaniu obiektowym?

Czym są publiczne, prywatne i chronione w programowaniu obiektowym?

Author: Ben S, 2009-06-20

5 answers

Są to modyfikatory dostępu i pomagają nam zaimplementować enkapsulację (lub ukrywanie informacji). Mówią one kompilatorowi, które inne klasy powinny mieć dostęp do zdefiniowanego pola lub metody.

private - tylko bieżąca klasa będzie miała dostęp do pola lub metody.

protected - tylko bieżąca klasa i podklasy (a czasami także klasy z tym samym pakietem) tej klasy będą miały dostęp do pola lub metody.

public - Każda klasa może odnosić się do pola lub wywoływać metodę.

zakłada się, że te słowa kluczowe są używane jako część deklaracji pola lub metody w definicji klasy.

 121
Author: Ben S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-20 02:34:51

Wszystkie trzy są modyfikatorami dostępu i słowami kluczowymi, które są używane w klasie. Wszystko zadeklarowane publicznie może być używane przez dowolny obiekt w klasie lub poza klasą, zmienne prywatne mogą być używane tylko przez obiekty w klasie i nie mogą być zmieniane przez bezpośredni dostęp (ponieważ mogą zmieniać się przez funkcje takie jak funkcja przyjaciela).Wszystko, co jest zdefiniowane w sekcji protected, może być użyte przez klasę i jej właśnie pochodną klasę.

 4
Author: monica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 02:31:11

Nie są to tak naprawdę pojęcia, ale raczej specyficzne słowa kluczowe, które mają tendencję do występowania (z nieco inną semantyką) w popularnych językach, takich jak C++ i Java.

Zasadniczo mają one na celu umożliwienie klasie ograniczenia dostępu do członków (pól lub funkcji). Chodzi o to, że im mniej jeden typ jest dozwolony do dostępu w innym typie, tym mniejsza zależność może zostać utworzona. Umożliwia to łatwiejszą zmianę dostępnego obiektu bez wpływu na obiekty, które się do niego odnoszą.

Ogólnie mówiąc, public oznacza, że każdy ma dostęp, private oznacza, że tylko członkowie tej samej klasy mają dostęp, a protected oznacza, że członkowie podklas są również dozwoleni. Jednak każdy język dodaje do tego swoje rzeczy. Na przykład, C++ pozwala dziedziczyć nie-publicznie. W Javie istnieje również domyślny (package) poziom dostępu, istnieją reguły dotyczące klas wewnętrznych itp.

 3
Author: Uri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-20 02:11:31

Element publiczny to taki, który jest dostępny z dowolnej innej klasy. Musisz tylko wiedzieć, jaki to obiekt i możesz użyć operatora dot, aby uzyskać do niego dostęp. Protected oznacza, że klasa i jej podklasy mają dostęp do zmiennej, ale nie do żadnych innych klas, muszą użyć gettera/settera, aby zrobić cokolwiek ze zmienną. Prywatna oznacza, że tylko ta klasa ma bezpośredni dostęp do zmiennej, Wszystko inne wymaga metody / funkcji, aby uzyskać dostęp lub zmienić te dane. Mam nadzieję, że to pomoże.

 1
Author: mnuzzo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-20 02:10:57

Podsumowując, w programowaniu obiektowym wszystko jest modelowane na klasy i Obiekty. Klasy zawierają właściwości i metody. Publiczne, prywatne i chronione słowa kluczowe są używane do określenia dostępu do tych elementów(właściwości i metod) klasy z innych klas lub innych .biblioteki DLL lub nawet inne aplikacje.

 0
Author: Zaki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-20 09:44:36