2008-11-06 3 views
1

Немного связано с моей other question: В чем разница между следующими:.Класс Java Доступность

private class Joe 
protected class Joe 
public class Joe 
class Joe 

Еще раз, разница между последним 2 является то, что я больше всего заинтересован в

+0

Я только что прочитал ваш другой вопрос. Учитывая ответы на этот вопрос, этот вопрос является излишним. Да, у них несколько разные вопросы, но ссылки приведены как доступность класса, так и переменные. – 2008-11-06 06:33:31

+0

Полный ACK с Jon Skeet – dhiller 2008-11-06 06:34:48

ответ

14

Открытый класс доступен для класса в любом пакете.

Класс с доступом по умолчанию (class Joe) доступен только для других классов в одном пакете.

Частные и защищенные модификаторы могут применяться только к внутренним классам.

Закрытый класс доступен только для его охватывающего класса и других внутренних классов в одном классе.

Защищенный класс виден другим классам в одном пакете и классам, расширяющим охватывающий класс.

1
  • частные: открыты для внешних классов только
  • защищено: открыты для внешних классов только
  • общественного пользования: видимые для всех других классов
  • класса: пакет-частные, так открыты для классов в пределах одного пакета

См. JLS для получения дополнительной информации.

1

A class with default access не имеет модификатора, предшествующего ему в декларации.

default access - это доступ на уровне пакета, поскольку класс с доступом по умолчанию можно увидеть только по классам внутри одного и того же пакета.

Если класс имеет доступ по умолчанию, класс в другом пакете не сможет создать экземпляр этого класса или даже объявить переменную или тип возврата. Компилятор будет жаловаться. Например:

package humanity; 
class Person {} 

package family; 
import humanity.Person; 
class Child extends Person {} 

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

 Смежные вопросы

  • Нет связанных вопросов^_^