1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-thinking-in-java-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
6.5 protected.md 2.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 09:15 d56454c

6.5 protected

Теперь, когда мы понимаем концепцию наследования, ключевое слово protected приобретает смысл. В идеальном случае, члены с уровнем доступа private всегда остаются "частными", и никто не может к ним обращаться. Однако в реальных приложениях часто возникает необходимость скрывать некоторые вещи глубоко внутри, но при этом позволять доступ к этим членам для производных классов. Ключевое слово protected помогает нам это сделать. Это значит, что "это само по себе является приватным, но доступно для любого объекта, который наследует этот класс, или для других объектов в том же пакете". То есть, в Java protected становится способом достижения "дружественного" уровня доступа.

Наилучшим подходом является сохранение членов как private, то есть всегда иметь возможность изменения деталей реализации базового класса. При этом можно использовать ключевое слово protected, чтобы предоставить контролируемый уровень доступа для наследников:

//: Orc.java
// Ключевое слово protected
import java.util.*;

class Villain {
    private int i;
    protected int read() { return i; }
    protected void set(int ii) { i = ii; }
    public Villain(int ii) { i = ii; }
    public int value(int m) { return m * i; }
}

public class Orc extends Villain {
    private int j;
    public Orc(int jj) { super(jj); j = jj; }
    public void change(int x) { set(x); }
}
///:~

Как видно, метод change() имеет доступ к методу set(), так как его уровень доступа protected (защищённый).

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-thinking-in-java-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-thinking-in-java-zh.git
oschina-mirror
wizardforcel-thinking-in-java-zh
wizardforcel-thinking-in-java-zh
master