2013-04-07 1 views
0

Как указано во многих местах, класс дает уровень доступа к частному доступу, что означает, что такой класс может быть доступен только другим, это тот же пакет. Я не много знаю о пакетах, но, полагаю, вы знаете, что добавить «пакет x» в начале файла достаточно знаний, чтобы задать свой вопрос.Доступ к классам по умолчанию для классов private-private public public

Я сделал файл с ингредиентом класса. Другой файл содержит

public class cooking{ 
    public static void main(String[] args) {..... 

В любом месте декларации нет объявления. Тем не менее, моя программа успешно скомпилирует два файла, а также работает так. Что мне не хватает? Разве класс варки НЕ может видеть ингредиент?

+0

Пожалуйста, пост больше кода основного ингредиента с использованием, а также класса ингредиентов. – Aubin

+0

Опубликовать инструкции 'package' для обоих классов. –

ответ

1

Ваша IDE (например, netbeans или eclipse) компилирует код, потому что оба класса находятся в одном проекте и он «знает», что вы имеете в виду этот класс.

1

Классы могут видеть другие классы в одном каталоге без операторов импорта. Пакеты - это способы организовать ваш код и, по сути, просто каталоги в папке приложения. Все классы могут видеть другие классы в пределах того же класса без необходимости импорта, это когда разные пакеты определены таким образом, как ваша структура бытия:

src 
| 
+- Cooking.java 
| 
+- utilities 
    | 
    +- Ingredient.java 

Конечно файл Ингредиент будет предваряться package utilities; и если вы пытались вы получите сообщение об ошибке, если в файле не было import utilities.Cooking;. Package-private просто означает, что классы за пределами пакета (или папки) не могут видеть или получать доступ к файлу или его свойствам Package-private.

1

Если вы не добавляете инструкцию пакета в классы Java, то эти классы находятся в одном пакете = так называемый пакет по умолчанию. и поэтому эти классы имеют доступ друг к другу независимо от того, классифицируете ли вы классы как общедоступные или нет.

public class A 

= этот класс А виден во всех пакетах

class B 

= этот класс B виден только по классам в том же пакете, как B