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

Является ли класс закрытым или общедоступным по умолчанию в Java и С++?

Являются ли классы частными или общедоступными по умолчанию в Java и С++?

4b9b3361

Ответ 1

  • Java

    По умолчанию видимость классов является закрытой для пакета, т.е. только для классов в одном пакете.

  • С++

    Класс не имеет видимости, определенной как в Java. Они видны, если вы включили их в блок компиляции.

Ответ 2

В Java класс верхнего уровня является открытым или общедоступным. Нет "private". Вы можете использовать только общедоступное ключевое слово или отключить его. Если вы оставите его, он не является общедоступным, т.е. Отображается только для других классов в одном пакете.

Вложенный класс, то есть класс внутри другого класса, может быть общедоступным, закрытым, закрытым, защищенным или закрытым, как и любой другой член класса. По умолчанию (т.е. Тот, у кого нет модификатора) является закрытым пакетом, видимым только для классов в одном пакете.

EDIT: Забыл ответ С++, так что см. (и upvote) ответ @zeller.:)

Ответ 3

Согласно & sect; 6.6.1 JLS,

Если класс верхнего уровня или тип интерфейса не объявлен общедоступным, тогда он может быть доступен только изнутри пакета, в котором он объявлен.

Итак, класс Java по умолчанию является закрытым пакетом.

Это не относится к С++. Класс не имеет видимости - только его участники могут иметь контроль доступа. См. Раздел 11 раздела С++ 11 для получения информации о контроле доступа к членству. Здесь выдержка из параграфа 1...

Член класса может быть

  • private; то есть его имя может использоваться только членами и друзьями класса, в котором он объявлен.
  • protected; то есть его имя может использоваться только членами и друзьями класса, в котором оно объявлены классами, полученными из этого класса, и их друзьями (см. 11.4).
  • public; то есть его имя можно использовать в любом месте без ограничения доступа.