Top.Mail.Ru

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

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

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

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

x
Что значит protected?
; I; s- a. L& ]8 ]; ~Когда переменная или метод класса объявлены с модификатором protected, это означает следующее:( `; L* ]& T/ |# @9 \0 g5 k6 N
  • Доступ в пределах класса:
    & T: m+ n1 `- S' @8 [6 Y) }/ Q" L
    • Поля или методы с модификатором protected доступны внутри того же класса, в котором они объявлены.' P' Z6 X) {& a. d6 L% g  Z" q; _
  • Доступ в пределах пакета:
    6 V1 x5 T- |; D6 Z/ @. ^
    • Все классы, находящиеся в том же пакете (пакет — это каталог, в котором находятся файлы), могут обращаться к полям и методам с модификатором protected." t$ d8 B, p, X
  • Доступ в наследуемых классах:
    8 u% i- G5 m0 u3 Y* a, o
    • Классы, которые наследуют данный класс (даже если они находятся в других пакетах), могут также обращаться к полям и методам, помеченным как protected.
      * D8 O" D$ B, e7 \- D( m

5 [  P8 ^) }) E) u/ N; P9 j+ k- {$ w9 P  d
Различие между public, protected, private, и default (package-private):
  • public: Доступен всем. Любой класс может использовать поля и методы, объявленные с модификатором public, независимо от того, в каком пакете они находятся.
  • protected: Доступен классам в том же пакете и классам-наследникам (даже если наследники находятся в другом пакете).
  • private: Доступен только внутри самого класса. Другие классы, даже наследники, не могут обращаться к полям и методам, объявленным как private.
  • default (package-private) (когда модификатор не указан): Доступен только классам в том же пакете. Класс из другого пакета не сможет получить доступ к таким членам.8 J$ _7 E; }- ?8 F6 J$ l3 r8 p) b, H
Пример:
; K8 `% c! [3 D" ^* K8 J
  1. public class Animal {& Q) q5 l  S& s" i# U
  2.     protected String name;
    6 c( i/ z) l& E9 y9 c( {, x4 @

  3. " I/ t( n; x" ^. D
  4.     protected void eat() {
    - D& I, v+ K* D1 X+ V. i9 |# J% ?( u7 Y
  5.         System.out.println("Animal is eating");8 K, u" T8 ?7 C$ o( ^% K/ S2 M  s9 Q7 G
  6.     }
    " U' f( R& [- `2 d
  7. }% G* l- l) Y$ b% {: Q2 A% B! Z. L
  8. " Y! [' ^3 W% y  X* x5 V- B/ H
  9. public class Dog extends Animal {- I: u) B) j# s. [# L2 @
  10.     public void bark() {0 W5 P6 P/ F/ Z
  11.         System.out.println("Dog is barking");
    ! Y3 @: f% p# M4 c" W$ z
  12.     }
    3 a0 J2 n$ E2 K! ^
  13. " B4 S) c8 A, g' e; _" l9 k0 @' A4 e
  14.     public void dogBehavior() {
    ; ?) Z) O% B4 X8 v
  15.         // Доступ к protected полям и методам родительского класса( `3 e- {+ y' O5 {9 m1 k
  16.         name = "Buddy";      // доступ к полю name6 G* }- h6 B# F% m
  17.         eat();               // вызов метода eat: T0 \% n3 b0 W  D) D$ h$ r) `
  18.         bark();              // вызов метода bark7 V* j, [4 ?. l) S; X4 v
  19.     }; V% _" r3 F. `8 H2 K+ }: D( ?' j
  20. }4 U* [0 C( j" ^& z7 x
Скопировать код
В этом примере:  {% x% F( }  q1 U# m7 N9 j
  • Переменная name и метод eat в классе Animal объявлены как protected.
  • Класс Dog, который наследуется от класса Animal, может свободно использовать name и eat благодаря тому, что они объявлены как protected.
  • Если бы name и eat были объявлены как private, класс Dog не мог бы получить к ним доступ.
    ) d. a9 C6 ~  d7 T. X
Основное преимущество protected:Модификатор protected предоставляет возможность наследникам работать с полями и методами родительского класса, сохраняя при этом некоторую степень инкапсуляции. То есть, другие классы не могут получить доступ к этим полям и методам, если они не находятся в том же пакете или не являются наследниками.9 i7 m7 p2 p( c! E& S8 o# O
Надеюсь, это объяснение помогло!3 w7 }5 A$ y' l8 U( ^5 q$ E( i, a
1 p5 y  q4 P; v: v

7 v0 @! i2 ]# Y; N
; T5 ~* T' i" ]2 ]- c
) X9 n9 Q& F, v: q3 |( K/ G! ?
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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