2012-05-24 7 views
2

Я относительно новичок в java, и я немного читал о частных и публичных модификаторах acccess. Я хотел бы устранить любую путаницу один раз и все в этой теме, потому что я чувствую, что у меня нет лучшего понимания. МодификаторыОсновы модификатора частного и публичного java-доступа

доступа в переменных

Пожалуйста, поправьте меня, если я ошибаюсь, переменный являются общедоступными по умолчанию. Если модификатор доступа установлен в общедоступный или просто не установлен вообще, то другие классы из одного и того же проекта могут получить доступ к целому числу и/или изменить его. Если он является закрытым, чем внешний вид и не может быть доступен классам за пределами того, в котором он был создан.

Accesss модификаторы в классах

модификаторы доступа в классах, я, кажется, не в полной мере понять. Насколько я понимаю, если я вызову частный метод из метода, который не находится в том же классе, то он не будет работать. Если это публично, чем будет?

Есть ли что-нибудь, что у меня отсутствует или не понимаю правильно?

Я ценю помощь в этом отношении.

+0

переменные существуют только внутри функции. Вы имеете в виду _fields_ – SLaks

+2

@SLaks: Нет, поля тоже являются переменными. См. Http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.3 –

+0

В последнем вопросе, классах, методах и переменных все могут иметь модификаторы доступа, правильно? – AnchovyLegend

ответ

3

Пожалуйста, исправьте меня, если я ошибаюсь, переменная является общедоступной по умолчанию.

Вы ошибаетесь. Предполагая, что вы имеете в виду поля, по умолчанию у них есть «пакетный» доступ, который не может быть явно выражен. Локальные переменные не имеют понятия контроля доступа - они существуют только в контексте метода в любом случае, поэтому их нельзя ссылаться нигде.

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

Если публикация установлена, то любой код может получить к нему доступ.

Если это доступ по умолчанию (пакет), то любой код в одном пакете может получить к нему доступ.

Модификаторы доступа в классах, кажется, я не понимаю. Насколько я понимаю, если я вызову частный метод из метода, который не находится в том же классе, то он не будет работать. Если это публично, чем будет?

Это очень хорошо, да.

Предлагаю вам ознакомиться с Java tutorial on all of this и проконсультироваться с language spec section 6.6 для получения более подробной информации.

+0

спасибо за ответ, не знал, что;) – AnchovyLegend

1

Вы можете найти информацию о 4 модификаторах here на сайте Oracles.

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

Если публикация установлена, то любой код в любой упаковке может получить к ней доступ.

1

На самом деле на Java существует четыре разных модификатора доступа, частные, общедоступные, защищенные и специфичные для пакета. «Пожалуйста, исправьте меня, если я ошибаюсь, переменная является общедоступной по умолчанию» - вы ошибаетесь здесь, переменная, если не объявлена ​​по-разному, имеет доступ к пакету. Если он настроен на публикацию, он может быть изменен другими классами даже вне исходного пакета. Этот сайт - http://javapapers.com/core-java/access-modifiers-in-java-explain/ - может предоставить вам полезные советы. На самом деле это очень легко, когда вы немного читаете о концепциях OO, таких как Encapsulation. Затем вы поймете цель модификаторов доступа (чтобы обеспечить целостность данных).

3

Here's хороший документ на эту тему.

Есть четыре уровня доступа:

  1. частные: Только что класс (даже не потомки) могут получить доступ.
  2. protected: Доступ только к этому классу и его потомкам и классам в одном пакете.
  3. package-private (без спецификатора) - только классы в одном пакете могут получить доступ - даже подклассы, которые не находятся в одном пакете, не могут.
  4. общественность: у всех есть доступ.

Для обеих переменных-членов и методов доступ по умолчанию является закрытым пакетом.

+1

Защищенный модификатор также позволяет получить доступ к классам в одном пакете. – GriffeyDog

+0

Так оно и есть. Не мой день. Спасибо @ GriffeyDog - я исправил. – SirPentor

0

Модификаторы доступа:

  • Public - {Можно получить доступ в любом месте проекта}

    Private - {Можно получить доступ только внутри класса}

    Protected - {Можно получить доступ в пакет и подклассы}

    По умолчанию - {можно получить доступ к пакету}

Модификаторы Non-Access:

  • Static - {для создания переменной класса и метод}

    Final - {для создания доработан класс, переменная и метод}

    Аннотация - {для создания абстрактного метода и класса}

    Sy nchronized - {для потоков}

Чтобы узнать больше следовать этому link

0

Java предоставляет ряд модификаторов доступа для установки уровней доступа для классов, переменных, методов и конструкторов. Четыре уровня доступа:

По умолчанию: отображается на упаковке. Модификаторы не нужны.

Закрыто: только для ознакомления.

Публикация: Доступна миру. Все классы и пакеты.

Защищено: Видимо для упаковки и всех подклассов.

Если модификатор доступа не задан программистом, используется модификатор доступа по умолчанию.

0

приватный и открытый доступ к java-спецификаторам. В java-спецификаторах private access он определяет access.private, как собственное семейное свойство, которое может использовать только то, к какому семейству принадлежит. Это означает, что внутри класса, метода и переменной можно использовать. Публикация похожа на свойства правительства, что означает, что каждый может получить доступ к свойствам без необходимости жетонов

+0

Не могли бы вы это изменить? Трудно читать. – Robert

0

частные и общедоступные спецификаторы доступа java. в java, спецификаторы частного доступа определяют доступ.

секретна как собственной семейной собственности, которые могут использует только какое семейство belongs.that означает внутри класса, метода и переменная может быть использована

.

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

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