Top.Mail.Ru

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

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

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

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

x
Что значит protected?
5 L9 D+ I6 }0 i9 X4 E" k! _) }Когда переменная или метод класса объявлены с модификатором protected, это означает следующее:. V! J" }* k  U( E: S* a  r) I0 R
  • Доступ в пределах класса:. ^* G" w2 Y& ^; S% H( i
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.0 E: z+ a' ]7 w
  • Доступ в пределах пакета:
    2 b: _1 q/ i6 e0 _
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.6 w9 J6 I! n7 _9 f# \
  • Доступ в наследуемых классах:! x; g+ @. I0 ~+ p/ y% {( J! e
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.0 q2 p! z3 ?+ O# p

: a# o$ B( I& A
5 x8 ]& i6 L( N( X9 |& y4 U+ b/ \Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.! }' M6 J. }% i1 J. a: U
Пример:/ i- r, z6 U0 d! d( t9 a2 E
  1. public class Animal {% Z: w! b! K  ^% c6 I, D9 r
  2.     protected String name;( b4 T# W! p6 N; _/ N# C

  3.   E* G3 q, M. P! \
  4.     protected void eat() {
    $ O: ?' k, ]( z. G) s- b5 e
  5.         System.out.println("Animal is eating");% N* W4 D8 O" d5 m8 e5 u: T  N
  6.     }
    4 |) }8 ^6 b, t' B2 F
  7. }
    3 P) p* n/ W7 t, A  v9 `' s& l( Y

  8. 9 v  Z/ P7 y+ W( l( _
  9. public class Dog extends Animal {4 s& _) Q. t6 N1 }  P# g2 w
  10.     public void bark() {
    ( b" t- q* p, R( o& J: [" p4 X7 v
  11.         System.out.println("Dog is barking");
    7 B) _; n) Q) k' l7 j* h
  12.     }
    5 ]5 s0 i! z9 o; D& z. l

  13. + h' x: G' `, P( U7 j
  14.     public void dogBehavior() {
    / b) h7 |& d0 q& m# r
  15.         // Доступ к protected полям и методам родительского класса; o+ e- }& A0 ~2 j
  16.         name = "Buddy";      // доступ к полю name
    % v9 k  v( C/ L3 U4 i" E
  17.         eat();               // вызов метода eat
    " [- u$ z' b. A. N+ q$ U
  18.         bark();              // вызов метода bark" H# V( {6 D% m
  19.     }7 ?! c3 V, }. O" l/ D  ?2 X0 P
  20. }
      l1 b+ V/ A% B! b0 ^
Скопировать код
В этом примере:) c, c( V/ Y+ c+ K- ^/ O
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    $ @2 J. z: ]  H/ u
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками., |4 H! a1 \# v6 J
Надеюсь, это объяснение помогло!
/ n( r9 t5 A: d# p$ n- E, l. @/ j, j9 t  K" K6 G
3 ?, |* |: R3 j/ o

5 A+ E! i9 e7 t2 S, g
7 E" [9 @- H9 x' e$ N+ G4 ~
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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