У овом чланку ћете сазнати о сва 4 модификатора видљивости у Котлину и како они функционишу у различитим сценаријима.
Модификатори видљивости су кључне речи које постављају видљивост (приступачност) класа, објеката, интерфејса, конструктора, функција, својстава и њихових постављача. (Не можете подесити модификатор видљивости гетера јер они увек имају исту видљивост као и својство.)
У Котлин класа и објеката Члан, сте сазнали о видљивости модификатора public
и private
укратко. Сазнаћете два модификатора више видљивости protected
и internal
(као public
и private
) детаљно.
Модификатори видљивости унутар пакета
Пакет организује скуп повезаних функција, својстава и класа, објеката и интерфејса. Препоручено читање: Котлин пакети
Модификатор | Опис |
---|---|
јавно | декларације су видљиве свуда |
приватни | видљиво унутар датотеке која садржи декларацију |
унутрашње | видљив унутар истог модула (скуп Котлин датотека састављених заједно) |
заштићен | није доступно за пакете (користи се за поткласе) |
Напомена: Ако модификатор видљивости није наведен, public
подразумевано је.
Узмимо пример:
// назив датотеке: хелло.кт пакет тест фун фунцтион1 () () // подразумевано јавно и видљиво свуда привате фун фунцтион2 () () // видљиво унутар хелло.кт интерне функције фун3 () () // видљиво унутар исти модул вар наме = "Фоо" // свуда видљиво гет () = поље // видљиво унутар хелло.кт (исто као и његово својство) привате сет (валуе) (// висибле инсиде хелло.кт фиелд = валуе) привате цласс цласс1 () // видљиво изнутра хелло.кт
Модификатори видљивости унутар класа и интерфејса
Ево како модификатори видљивости раде за чланове (функције, својства) декларисане унутар класе:
Модификатор | Опис |
---|---|
јавно | видљив сваком клијенту који може видети класу пријављивања |
приватни | видљиво само унутар класе |
заштићен | видљив унутар класе и њених поткласа |
унутрашње | видљив сваком клијенту унутар модула који може да види класу пријављивања |
Напомена: Ако замените protected
члана у изведеној класи без навођења његове видљивости, његова видљивост ће такође бити protected
.
Узмимо пример:
отворена класа Басе () (вар а = 1 // јавно по дефаулту приватно вар б = 2 // приватно према основној класи заштићено отворено вал ц = 3 // видљиво за базу и изведену класу интерни вал д = 4 // видљиво унутар истог модула заштићена је забавна класа е () () // видљива класи и изведеној класи) Изведено: Басе () (// видљиви су а, ц, д и е () основне класе // б није видљиво заменити вал ц = 9 // ц је заштићен) фун маин (аргс: Арраи) (вал басе = Басе () // басе.а и басе.д су видљиви // басе.б, басе.ц и басе .е () нису видљиви вал изведено = Изведено () // изведено.ц није видљиво)
Промена видљивости конструктора
Подразумевано је видљивост конструктора public
. Међутим, можете га променити. За то је потребно изричито додати constructor
кључну реч.
Конструктор је public
подразумевано у доњем примеру:
тест класе (вал а: Инт) (// код)
Ево како можете да промените његову видљивост.
класа Тест приватни конструктор (вал а: Инт) (// код)
Ево конструктора private
.
Напомена: У Котлину локалне функције, променљиве и класе не могу имати модификаторе видљивости.