Top.Mail.Ru

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

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

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

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

x
Что значит protected?
: b5 I7 a% z, l* QКогда переменная или метод класса объявлены с модификатором protected, это означает следующее:
+ h5 Q. m8 e0 C7 U9 F
  • Доступ в пределах класса:6 \' e; ?) M2 B+ ~8 l% }& f
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.5 R6 |4 O( z! J2 J/ g& C
  • Доступ в пределах пакета:- H) Z( V3 i( z2 \1 C3 D' c" ^' ?+ I
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.
      ; w# q3 L$ y% a! n; F: D
  • Доступ в наследуемых классах:
    # B9 S4 ~. ?# B. _+ K
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      ( _& l9 ]  J2 [- B2 ^5 V  a

. P" w% v; E8 a/ ~) c/ ?2 M" \8 Q9 b8 J9 |) a9 p
Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.7 A. e# q6 f9 }5 V, j1 L8 _+ T
Пример:
7 b6 ]! d, N9 d
  1. public class Animal {
    - b, g) d5 H6 T! Q' V. C
  2.     protected String name;' u0 t  e) e. W; F0 d8 t6 Q5 W# e
  3. $ ~' `( o4 X# n
  4.     protected void eat() {, @0 t4 p# r. u( ~
  5.         System.out.println("Animal is eating");
    * }# U6 H, c8 H0 m+ L6 m
  6.     }- a1 U$ P! f2 q- i
  7. }# u5 ]$ W( [* w6 v7 C
  8. 7 B  G$ r: ~- e' Q' y
  9. public class Dog extends Animal {4 @) R4 P; j6 m" \8 G: B! }+ w
  10.     public void bark() {2 A+ z  U! H+ R6 F6 q& ~
  11.         System.out.println("Dog is barking");
    ; Q+ B5 I; r, L  ?' ?
  12.     }( q) ?, v3 ]+ Q, y
  13. % F" Z5 g, C7 C0 j1 \6 X
  14.     public void dogBehavior() {
    ) w6 s+ A' _4 r
  15.         // Доступ к protected полям и методам родительского класса' ]" ]& W1 Z0 G6 Y
  16.         name = "Buddy";      // доступ к полю name$ |0 d+ M4 R2 }3 J
  17.         eat();               // вызов метода eat
    2 X/ V; `) X% s/ }* }9 i. F5 ]" R
  18.         bark();              // вызов метода bark
    $ T9 J2 H) t) |/ O2 Z( s
  19.     }
    : J) Q4 w" R8 ?; |' a* l7 Y
  20. }
    " _/ T6 x" B( k. c/ m5 P8 p
Скопировать код
В этом примере:
9 v1 l& s0 Q$ s
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    : N) P+ c6 X7 _; j
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.
5 n0 N( ^  _/ }Надеюсь, это объяснение помогло!
6 ^: y5 v+ v$ R" C" u2 ]0 o
) {+ g- s8 `, S
8 X  M" D; C2 L8 n6 l" T: \- @
3 x& p8 k7 o# n4 j5 [" h% |
8 U" ?$ ~. d% U+ S4 w. G
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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