Top.Mail.Ru

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

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

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

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

x
Что значит protected?$ Z+ `9 N$ l5 x, S% `$ u
Когда переменная или метод класса объявлены с модификатором protected, это означает следующее:
4 H9 y* l5 O* ]3 O# F$ o
  • Доступ в пределах класса:
    , r- _* |8 J& v& U" _. Y
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.. V# `& \# M/ ^. j
  • Доступ в пределах пакета:. v: _4 ?5 _( _! O" [2 e6 K1 z& E
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected.2 [* B5 V0 _, F4 y
  • Доступ в наследуемых классах:
    : E2 q/ v: i! m5 |7 w+ v
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      8 f( L1 j! u! r4 V3 Q6 i4 I- M# g
0 D7 A8 Z5 D6 F8 a+ Z
( `- }0 M; i$ j5 y
Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.. i1 [6 S: l. {/ w8 C! H( |
Пример:
% i4 d5 L) h5 B9 k8 W- O. A$ J
  1. public class Animal {
    , C. P* |9 b) e4 o( L! P
  2.     protected String name;+ j- L" d' ?9 {% J0 |

  3. ( ~) I" h) M+ w0 J
  4.     protected void eat() {
    % @; ^2 v: j' [9 ^* P
  5.         System.out.println("Animal is eating");
    2 x( n% W' ^+ V
  6.     }
    $ Q( w) J3 d4 Z2 _
  7. }$ Q1 B% q! \  s7 ]
  8. ; ]5 O, O: G% ~+ _/ }9 c  |# R
  9. public class Dog extends Animal {
    % g2 Q# @- P( l1 x
  10.     public void bark() {
    * D7 h3 ?% _, A6 i
  11.         System.out.println("Dog is barking");
    ) F* v1 g4 X  p
  12.     }
    ' l6 v0 W2 f$ U+ P! B
  13. ( B) K5 w8 `  }: x# l5 l- ^% Q" z/ g
  14.     public void dogBehavior() {7 m) U5 f6 N: j+ o/ V/ B
  15.         // Доступ к protected полям и методам родительского класса4 d" ^3 L% H7 \$ V! D) B! k
  16.         name = "Buddy";      // доступ к полю name% d3 d7 I: B- Z6 `
  17.         eat();               // вызов метода eat( a0 @2 y' D, Y! z% \' M$ \
  18.         bark();              // вызов метода bark8 F& n; }8 g" @7 g
  19.     }
    ! O/ ^% c3 ^0 X5 u( ~% N* i
  20. }
    8 Q$ K+ ]0 Y$ d6 m
Скопировать код
В этом примере:2 H8 C6 V9 A& F3 a, z
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
      U( k; H+ X4 |2 L' `+ l  z
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.
+ t! j( x3 ^: R; W  ~$ H3 y0 bНадеюсь, это объяснение помогло!$ S' h- z7 S, s7 G. R
8 R" H3 ^4 ^5 n+ W1 J4 I1 ^* H) s
* J0 n8 x$ R! l& N
. i& c: y+ V  F+ @
, E/ H3 K! p  o% w6 `( {
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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