Top.Mail.Ru

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

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

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

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

x
Что значит protected?
# D# Z9 g9 ^/ Q6 Z6 S- @  v" CКогда переменная или метод класса объявлены с модификатором protected, это означает следующее:* z1 m# p6 o- c
  • Доступ в пределах класса:" v: H8 H2 s& Z2 v6 P
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.7 I9 D' j  z7 a
  • Доступ в пределах пакета:* T# E8 q. F) O, o" E; c3 t, o" Z
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.
      " J% g. }( r( K& m
  • Доступ в наследуемых классах:0 F( I4 K4 L2 N- H5 r. v
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      % [2 p1 {& _5 B) b3 M2 C/ q0 {. j6 Q
& [  Q3 z+ J1 A

8 j5 N- u& [: |9 ^  oРазличие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.( F- H/ X0 T+ q# w2 m4 f
Пример:8 A* d8 c' F# c) O# U
  1. public class Animal {1 X4 P5 x* v! n" i
  2.     protected String name;
    ! c$ _3 _1 ^) t1 ~+ x

  3. / S8 o7 Q* E$ {
  4.     protected void eat() {7 n/ o: j0 I8 }+ B% n
  5.         System.out.println("Animal is eating");$ z- a+ R* F: |0 s) y  B
  6.     }
    % Z4 e6 F$ H7 J) {% A0 r! i% t5 a
  7. }
    ! D, ^& o" V  c4 q3 H0 p* H: C+ X

  8. 7 c& l! L% {' d( W
  9. public class Dog extends Animal {- B3 D4 y0 }1 Q& d
  10.     public void bark() {% X7 ]: L4 ~2 A$ C; W* Q1 ^
  11.         System.out.println("Dog is barking");& x0 b* z3 X" ^
  12.     }
    # U0 D" W5 d5 y3 @  U
  13. - @% O9 q& n8 |6 ?
  14.     public void dogBehavior() {; b9 {0 Q  s  g+ J
  15.         // Доступ к protected полям и методам родительского класса) v$ X/ L; A2 s7 _0 \  `. y
  16.         name = "Buddy";      // доступ к полю name0 V1 C$ S2 m4 s1 s  o; w% U4 z
  17.         eat();               // вызов метода eat
    % p  |  B$ k. y$ f$ M' y
  18.         bark();              // вызов метода bark( T' y( H9 `! u6 h3 x( R' t
  19.     }0 B9 A6 t3 g( m( e3 S0 ~% Q
  20. }
    % h, m9 E% s7 ?7 T% n& q" E( B
Скопировать код
В этом примере:" Q, H1 Q. H2 f- r+ d3 ^8 A4 X
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    5 K6 U1 V* y& g- ^
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.! i, g9 Q6 u( T
Надеюсь, это объяснение помогло!' J4 B+ _7 |8 z7 @

5 g& V3 z: [. w# \7 i; J$ g# L' V. }8 }' f

5 Y3 h+ I3 _% D1 v/ K. a/ S3 s" G- y" \! d$ X
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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