Top.Mail.Ru

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

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

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

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

x
Что значит protected?
: a- Z$ K7 E; I  q% n1 m  pКогда переменная или метод класса объявлены с модификатором protected, это означает следующее:
; E/ v. ?9 E# @1 Y8 {0 g
  • Доступ в пределах класса:, P4 J, g$ s' b6 H  L6 W
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.6 v4 L9 O# s6 t+ P3 o$ y  ]/ f
  • Доступ в пределах пакета:
    $ D4 {; I3 V7 s
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.
      ; X, A6 E6 @& f6 N" r
  • Доступ в наследуемых классах:
    3 a8 T6 W0 y9 S& D3 C; u8 {2 g& |
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      " }( {3 o0 \5 i$ @! F, ~
; e+ a% b  M$ z. x% ]4 b

7 w% F5 s  a( Q( TРазличие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.
    " z' R2 @4 o0 }0 i
Пример:
- J# E, |/ m6 U& w+ D
  1. public class Animal {- R" K/ N: P2 \- D; w8 O1 o
  2.     protected String name;$ r# U) N& |: q5 o" B
  3. 3 E" f# H2 Y8 i0 d5 L
  4.     protected void eat() {
    & p+ ~6 l: [9 |4 c& U  w
  5.         System.out.println("Animal is eating");
    7 O# ?' W5 x. J+ ]; M8 F& j9 ?
  6.     }4 ~8 P! _3 h  L, G1 m; K
  7. }; W0 `1 L- _+ C( p+ t

  8. % b- d$ m' R" U9 q7 H# z: [
  9. public class Dog extends Animal {/ i2 ?) m) k8 \5 f' |/ M! |, l
  10.     public void bark() {
    + u8 r+ |% Q6 _( F0 o; [5 o
  11.         System.out.println("Dog is barking");
    ' o; }% J1 H: k0 J. V
  12.     }
    ' h/ O* S" S) N0 Q6 R! j
  13. / z6 [: C5 P. m& J0 }) e5 M% R
  14.     public void dogBehavior() {
    ; x" f# ~0 h: J' Y' J
  15.         // Доступ к protected полям и методам родительского класса, V+ f1 D- y' {
  16.         name = "Buddy";      // доступ к полю name3 M3 Z9 e+ O8 |! Y
  17.         eat();               // вызов метода eat
    # ~# L& g3 ?. H# C9 t: H! x
  18.         bark();              // вызов метода bark
    : W% [% Y: E& H8 K5 ~. W
  19.     }/ l0 Q: `+ y" @* _' g: l
  20. }  h. S* Z7 d6 |
Скопировать код
В этом примере:1 p: O( }' d& a8 ?
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.' i3 n: t7 ^$ E0 t4 s) o& [
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.! l$ C* g' N! v
Надеюсь, это объяснение помогло!
8 Y$ H& H% M- K: }) j! R& s, B9 C2 r& P) N3 P

; T" B, t' \) _( P( e2 Q
3 g& N" v' Q4 u% T0 f9 q
. v. J( _; r5 k+ j- J/ E
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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