Top.Mail.Ru

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

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

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

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

x
Что значит protected?
, r8 u$ Y- w( E+ F# gКогда переменная или метод класса объявлены с модификатором protected, это означает следующее:
& \7 Y' }/ x/ P2 T. c) Z9 L, l
  • Доступ в пределах класса:
    8 j  z: \  \9 S9 l; h
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.
      8 ]% i/ o% ~0 i! D1 {2 |
  • Доступ в пределах пакета:
      [  l+ r7 m0 t- F( w
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.. E6 f+ S2 }4 d, Z: w* }' {
  • Доступ в наследуемых классах:
    ; s7 K, j4 ^) Y6 _( k9 ^4 m( O
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.5 b# V4 E) N8 p* a

9 l0 }7 ~" R, {2 H( v+ }/ S) @
3 Q( R# g  n7 uРазличие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.
    0 {# G# [% m* C0 |' f* Q9 V
Пример:% N% s( I3 q& @: P1 m
  1. public class Animal {& _0 Y: p9 e; D4 k# Y8 H
  2.     protected String name;
    $ [/ c- G3 a  ~6 F/ ^+ U. C

  3. & S" `7 k1 I& r2 a
  4.     protected void eat() {
    . I) i0 }* d  t& D# Q
  5.         System.out.println("Animal is eating");
    / c0 Y7 E* w/ \) F8 [/ O8 b
  6.     }  I" P4 c* Z" a6 P2 O
  7. }  |% d: s. n/ ?- r( I
  8. 7 Q5 a% t) W! F1 }4 J  [
  9. public class Dog extends Animal {) N( d( T6 T7 n1 c$ H" e; ~
  10.     public void bark() {; t& M2 G& t# K, t: w' _
  11.         System.out.println("Dog is barking");( w$ N$ ]9 w5 A
  12.     }# }' @. A' U: T1 I/ O# f

  13. ! X. }2 r! y3 Z& {+ D4 n. O: x
  14.     public void dogBehavior() {6 c& O- \# O4 o# |) ?5 y
  15.         // Доступ к protected полям и методам родительского класса" G0 z4 S, y/ q0 V  z
  16.         name = "Buddy";      // доступ к полю name. U# A; `* O8 r5 E( S9 h# }- z. B" }
  17.         eat();               // вызов метода eat5 l. l" m# W6 X, e$ ^
  18.         bark();              // вызов метода bark  U7 ~: N0 _) E1 e3 H
  19.     }& H" d0 l; j- O% l* q% {1 H
  20. }; G& l' [# C& ^! K7 M7 z* {5 O% `
Скопировать код
В этом примере:9 y  A$ g& M0 v4 l$ |
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    2 n- [3 X3 e4 A; {1 V5 U0 P; l8 n: g1 ^
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.! ?: {2 P8 I' u2 N1 Q
Надеюсь, это объяснение помогло!: T) e$ H: p: `* x$ S; \" U' G3 l

. Z7 m. v8 k/ r2 d6 t
) u) c  _: g) f$ }7 S
# o- ?! U# w7 z+ V  o
/ ?7 f4 i' v) P, p! g3 z
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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