Подтвердить что ты не робот

Что представляют собой переменные без публичного частного или защищенного объявленного как?

Если вместо:

private JButton theButton;

Я делаю:

JButton theButton;

В чем разница?

Спасибо

4b9b3361

Ответ 1

Пакет. Они видны другим классам в одном пакете.

FWIW, я обычно использую свою собственную аннотацию no-op @Package на них, просто чтобы было ясно, что я знаю, что я делаю, - что я не просто что-то забыл. Несмотря на то, что это по умолчанию, доступ к пакетам, вероятно, используется меньше в высококачественном коде, чем любая из трех других возможностей - с одним большим исключением:

В некоторых стилях модульного тестирования желательно иметь доступ к методам или полям, которые обычно являются частными. Один из способов обеспечения доступа - установить для них доступ к пакетам и поместить класс unit test в один и тот же пакет (но обычно в другое дерево "тестовых" каталогов). Некоторые разработчики считают, что это плохая практика - в общем, плохо использовать частные методы (или пакет для тестирования) в тестах.

Ответ 2

В Java существуют общедоступные, защищенные, пакетные (по умолчанию) и частные видимости; упорядоченно от большинства видимых до минимума.

Если вы не укажете его, по умолчанию видимость package.

package mytest.myvisibility;

public class MyClass
{
    public int myPublicInt; // visible to all
    protected myProtectedInt; // visible to subclasses of MyClass and to other members of the mytest.myvisibility package
    int myPackageInt; // visible only to other members of the mytest.myvisibility package
    private int myPrivateInt; // visible only to MyClass objects.
}