Top.Mail.Ru

[Руководство по Java для L2J] Что значит protected?

[Скопировать ссылку]
admin Опубликовано 2024-10-12 11:30:50 | Показать все сообщения |Режим чтения Распечатать Назад Вперед

Зарегистрируйтесь сейчас чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!

Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться

x
Что значит protected?
. |9 |, e/ L7 d9 U. i3 l9 jКогда переменная или метод класса объявлены с модификатором protected, это означает следующее:# l, N. {$ k% `0 ?# ^( Y5 j
  • Доступ в пределах класса:
    3 v2 p/ x8 p7 @8 |; T/ R0 J0 Q& j0 x
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.
      $ b3 e/ y. d- M7 p- T. R
  • Доступ в пределах пакета:
    - y9 d  O$ h  A8 y8 [; Z5 N+ m
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.
      : z  T2 g* W( P6 O
  • Доступ в наследуемых классах:' I( h/ t8 Z0 B. ^/ R; c/ U5 y6 R+ i
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      5 L2 V0 j+ {# D# g6 m7 K7 s
" H2 ^% |4 c; s
3 G6 E5 ^9 F# s( w) h
Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.# `+ I1 ?- _5 `
Пример:
/ M) p# k  t3 D3 t7 `" N
  1. public class Animal {, }! v- a' [) p" q6 m0 r
  2.     protected String name;. \. T$ m7 o. B
  3. ' n5 K. v" M4 K' N
  4.     protected void eat() {2 j+ i$ u+ T! t- ?% v. K
  5.         System.out.println("Animal is eating");7 D0 u3 r: g% G2 Z' @: Q
  6.     }
    5 z! X/ S9 I% L4 B+ S
  7. }* F) o3 p" ?3 r
  8. ( Z5 X( `7 F0 }0 K' g+ l
  9. public class Dog extends Animal {) H/ k" O8 q$ k9 G& i  L- X
  10.     public void bark() {  }4 F, R9 Y' l
  11.         System.out.println("Dog is barking");) B/ [- [( k8 x& s& N% t1 ~
  12.     }
    " ^. {( C% z  U) r7 E& i3 W5 q% D
  13. 2 ~9 ]' r0 K: A1 M4 b* N; N3 a- J
  14.     public void dogBehavior() {  E" L, V$ t& L3 a
  15.         // Доступ к protected полям и методам родительского класса7 Z2 `& \+ t5 F% S$ }
  16.         name = "Buddy";      // доступ к полю name$ n8 L/ p9 Y3 P# R
  17.         eat();               // вызов метода eat$ n' F$ K9 v) s5 i( e" N2 Y2 V
  18.         bark();              // вызов метода bark* n& ?+ ?4 _6 i6 Y/ V
  19.     }
    " t, z+ ^' c9 C2 z- @, i
  20. }: I/ I2 c+ r6 F) y' T( s
Скопировать код
В этом примере:2 N4 H/ U! x1 T+ [
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    0 Q9 Y8 W8 G. B9 b( P: V; v
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.
( }$ \% b" X, S# r! o9 d8 g# zНадеюсь, это объяснение помогло!
4 w0 r7 A. O4 c
7 S+ b0 F9 o1 m; r$ t0 G+ y+ g6 Y

- \9 o! X  n$ Y/ L4 @" l) I5 @% z
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

Правил начисления баллов

Опубликовать
Сектор творческих людей
Горячая линия

638638758

С понедельника по воскресенье с 9:00 до 23:00

Обратной связь

admin@artace.ru Онлайн

QR-код

Powered by Discuz! X3.5© 2001-2021 Comsenz Inc.