Top.Mail.Ru

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

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

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

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

x
Что значит protected?; O, n0 _7 [# v# b# C
Когда переменная или метод класса объявлены с модификатором protected, это означает следующее:
$ f+ L" O: c5 ^3 d3 b3 T
  • Доступ в пределах класса:1 a1 S$ q: D) z9 K7 i
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.$ R! P" K+ J6 A9 f# f; N+ l
  • Доступ в пределах пакета:) W8 i3 k$ Y0 T' r
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.
      # I' H% k, b$ a- o# w
  • Доступ в наследуемых классах:
      B: X6 `9 c, t7 j
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      . C; R  j! L' G* O: ~

9 ^1 f" m; O6 ?3 U) ^; H7 T8 C4 _8 D! Z# [: P
Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.4 g* y+ m. J) J6 ?3 B3 |
Пример:
8 d& B' t( }' t; K& _% ]
  1. public class Animal {
    6 ]( p& Q5 T% z1 i
  2.     protected String name;
    0 j. y# H: }5 f4 H: ]* `3 S

  3.   G( s5 g6 b2 a0 m- j! h( K+ u
  4.     protected void eat() {  p$ ~) D) Y7 ^8 Q. N) E
  5.         System.out.println("Animal is eating");
    6 z3 P& V4 P# |8 d
  6.     }& A* k2 c, m% S! R2 M* @
  7. }
    $ B, E0 H$ R! H3 ]
  8. 1 l" D" Q! w. Z9 Z& x1 l
  9. public class Dog extends Animal {/ c$ o: H+ A2 x* M
  10.     public void bark() {0 [9 Y: ?( A3 ^0 }0 e) y
  11.         System.out.println("Dog is barking");
    6 B& M' o% Z2 y0 B  c8 `# B) X  _
  12.     }
    ) U2 i6 t$ H7 k. m: \, @) W7 N* W
  13. ! C, f9 k& {2 ?- r. }$ D6 l
  14.     public void dogBehavior() {
    5 E! L* I1 K/ D9 K  g: o
  15.         // Доступ к protected полям и методам родительского класса1 g4 z! b6 `+ {, _4 p- p$ |; ^9 w
  16.         name = "Buddy";      // доступ к полю name( h, @6 v! {# C9 V' g
  17.         eat();               // вызов метода eat
    6 j1 p+ g4 p2 F7 i8 F8 {
  18.         bark();              // вызов метода bark+ s! q8 d- b" Q$ H4 M
  19.     }
    : }' b8 \. @9 A9 e# V
  20. }
    9 f/ i% s; U" A. W4 K
Скопировать код
В этом примере:
4 B2 b$ @8 V, g" L4 {; q
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.3 v: G: Z; O8 ^/ W3 x
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.: ~# S7 C9 _' P. v! t5 i/ M$ |
Надеюсь, это объяснение помогло!
! O; p$ t" G4 @' g* n3 s1 m( |" W! y* B2 I6 U

* ~/ y. K9 T& p. G+ x+ k8 ?& S7 v7 b( p1 p1 z
9 I6 y6 w' c. Y5 ^- {; i! [
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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