Руководство по Java Core. Виды модификаторов. Модификаторы доступа.

В языке Java есть 4 вида модификаторов доступа:

  • default
    Доступен внутри пакета.
  • private
    Доступен внутри класса
  • protected
    Доступен внутри класса и для всех подклассов.
  • public
    Доступен всем

Рассмотрим каждый их них отдельно.

default

Этот модификатор присваивается переменной, методу или классу в том случае, если явно его не указываем.

В этом случае переменная, метод или класс доступны всем классам внутри пакета.


private
Если мы используем модификатор доступа private для переменной, метода или конструктора, то они будут видны только внутри этого класса.
Классы и интерфейсы не могут иметь модификатор доступа private.
Доступ к переменным возможен только через getters и setters.
Пример:


public class Company {
    private String companyName;

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
}

В этом примере переменная companyName (имя компании) объявлена, как private, поэтому для доступа к ней созданы 2 метода setCompanyName() и getCompanyName.


protected
Переменные, методы и конструкторы с модификатором доступа protected доступны в подклассах в других пакетах и в любых классах в том же пакете.
Пример:


package net.proselyte.javacore.modifiers;

public class Developer {
    protected String writeCode(){
        return "Developer is writing code...";
    }
}

И другой класс


package net.proselyte.javacore.modifiers;

public class JavaDeveloper extends Developer{
    @Override
    protected String writeCode() {
        return "Java Developer is writing Java code...";
    }
}

Второй класс – наследник может перезаписать метод. Если бы мы объявили метод writeCode()
в родительском классе, как private, то мы не смогли бы это сделать.


public
Переменные, методы, класс и т.д. с модификатором доступа public доступны из любого класса.
Единственный нюанс заключается в том, что если мы пытаемся получить доступ к публичному классу из другого пакета, то мы должны импортировать класс с помощью ключевого слова import
Пример:


public void setId(int id){
   this.id = id;
}

В этом уроке мы рассмотрели модификаторы доступа в языке Java.