Top.Mail.Ru

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

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

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

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

x
Что значит protected?9 _9 y# S7 E7 e) R$ I/ x+ r7 u
Когда переменная или метод класса объявлены с модификатором protected, это означает следующее:3 @- E) d& o, D: o$ ], z; Q/ _
  • Доступ в пределах класса:
    $ ]; C9 ^6 T1 ]5 K  z
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.
      " j, [1 w2 Y% D% B+ O2 {
  • Доступ в пределах пакета:
    6 {) H( f6 n/ u8 p
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.
      $ G! ^+ y) n, L  y7 ]7 O; I" h
  • Доступ в наследуемых классах:
    9 C8 ?9 `' ^% [* k5 @" _) P; R- j
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.. G2 s* P6 l2 V* H

% b' _' S5 Q7 @4 K4 t  {* N% F" ~3 @
Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.5 K7 r/ c1 {% b2 a- e( K4 ]
Пример:; y9 W6 I, N) {. O# w" k
  1. public class Animal {* X3 c5 j1 P' K8 b" l; L
  2.     protected String name;
    0 P- Q/ p" D1 R9 |
  3. ' d- }' ?: K& K8 }$ E/ V
  4.     protected void eat() {
    , `- j3 b/ Z/ x4 i
  5.         System.out.println("Animal is eating");
    8 n2 a$ E2 C2 ^' v/ O, E
  6.     }7 ]) B, F4 l7 T  S4 b% I
  7. }: y( u4 g: ?' ^6 j2 I$ \7 o/ e

  8. 2 u, x7 r+ }: c, [, u% j6 c2 z
  9. public class Dog extends Animal {7 ^. a: u3 M8 W7 K8 ]/ J
  10.     public void bark() {
    , a4 K* ^  j; C. H7 D
  11.         System.out.println("Dog is barking");
    ! q& v9 }6 b0 V9 `
  12.     }
    + x% o9 ]' i( P8 N: v/ _

  13. 4 v) B- v9 U$ A. Z6 s- H' y- Y
  14.     public void dogBehavior() {# r$ k. M4 C) U6 v8 T$ [5 R# U" P
  15.         // Доступ к protected полям и методам родительского класса6 z; j4 [" F9 f" Z( i
  16.         name = "Buddy";      // доступ к полю name$ S' ]+ v) }. D5 B: }* o
  17.         eat();               // вызов метода eat7 u" r9 o% W' M5 L' r) F
  18.         bark();              // вызов метода bark6 Q: N1 W; q/ ]. i* ]5 M
  19.     }2 [: R5 X# \! P7 ~8 C" M
  20. }
    * R3 ~7 }  c. e2 e* G
Скопировать код
В этом примере:
6 B, O6 w2 {+ N# V  I' Y, `
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    2 D  ^- [5 j* f  L9 ~! @2 }( E
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.. w! D. K7 z3 c6 L- p6 C
Надеюсь, это объяснение помогло!
; ^- B: i/ R: C) u# g5 K- l6 S) E$ p$ D* U( ]& u; m2 n1 ~

/ l2 ?- X* z( _# F; q# r/ ~, ]0 J

6 R% I0 t1 ?6 D6 s+ n
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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