Являются ли классы частными или общедоступными по умолчанию в Java и C ++?
Джава:
По умолчанию видимость классов закрыта для пакета, то есть видна только для классов в одном пакете.
C ++:
Класс не имеет видимости, определенной в Java. Они видны, если вы включили их в модуль компиляции.
В Java верхний уровень класс либо публичный, либо непубличный. Здесь нет «частного». Вы можете использовать только общедоступное ключевое слово или оставить его выключенным. Если вы отключите его, он будет закрытым, то есть видимым только для других классов в том же пакете.
вложенными Класс, то есть класс внутри другого класса, может быть сделан открытым, закрытым для пакета, защищенным или закрытым, как и любой другой член класса. По умолчанию (т. Е. Тот, который не имеет модификатора) является закрытым для пакета, видимым только для классов в том же пакете.
РЕДАКТИРОВАТЬ: Забыл ответ C ++, так что смотрите (и upvote) @ Зеллер ответ. 🙂
В соответствии с §6.6.1 JLS,
Если класс верхнего уровня или тип интерфейса не объявлен общедоступным, то к нему можно получить доступ только из пакета, в котором он объявлен.
Итак, класс Java по умолчанию Пакет-частное.
Это не относится к C ++, однако. Классу не хватает видимости — только его члены могут иметь контроль доступа. См. §11 стандарта C ++ 11 для получения информации об управлении доступом членов. Вот выдержка из №1 …
Членом класса может быть
private
; то есть его имя может использоваться только членами и друзьями класса, в котором оно объявлено.protected
; то есть его имя может использоваться только членами и друзьями класса, в котором оно находится
объявлено классами, производными от этого класса, и их друзьями (см. 11.4).public
; то есть его имя можно использовать где угодно без ограничения доступа.