2

我对 java 比较陌生,我读过一些关于私有和公共访问修饰符的文章。我想一劳永逸地消除这个话题中的任何混淆,因为我觉得我对它没有最好的把握。

变量中的访问修饰符

如果我错了,请纠正我,一个变量默认是公共的。如果访问修饰符设置为 public 或根本没有设置,那么来自同一项目的其他类可以访问整数和/或修改它。如果它是私有的,那么它对外部是不可见的,并且不能被创建它的类之外的类访问。

类中的访问修饰符

类中的访问修饰符,我似乎并不完全理解。据我了解,如果我从不在同一个类中的方法调用私有方法,那么它将不起作用。如果它是公开的,它会吗?

有什么我遗漏或不正确理解的吗?

我感谢在这方面的帮助。

4

8 回答 8

3

如果我错了,请纠正我,一个变量默认是公共的。

你错了。假设您的意思是字段,默认情况下,它们具有“包”访问权限,无法明确表达。局部变量没有访问控制的概念——它们只存在于方法的上下文中,因此不能从其他任何地方引用。

如果访问修饰符设置为 public 或根本没有设置,那么来自同一项目的其他类可以访问整数和/或修改它。

如果它被设置为公开,那么任何代码都可以访问它。

如果它是默认(包)访问,则同一包中的任何代码都可以访问它。

类中的访问修饰符,我似乎并不完全理解。据我了解,如果我从不在同一个类中的方法调用私有方法,那么它将不起作用。如果它是公开的,它会吗?

这是非常正确的,是的。

我建议您阅读有关所有这些的 Java 教程,并查阅语言规范第 6.6 节了解更多详细信息。

于 2012-05-24T19:48:14.590 回答
3

这是关于这个主题的一个很好的文档。

有四个访问级别:

  1. private:只有那个类(甚至没有后代)可以访问。
  2. protected:只有该类及其后代和同一个包中的类可以访问。
  3. 包私有(无说明符)——只有同一个包中的类可以访问——即使不在同一个包中的子类也不能。
  4. public:一切都可以访问。

对于类成员变量和方法,默认访问是包私有。

于 2012-05-24T19:50:57.640 回答
1

您可以在 Oracles 网站上找到有关 4 个修饰符的信息。

如果不指定修饰符,则称为默认,这意味着只有同一个包中的任何代码都可以访问它。

如果它被设置为公开,那么任何包中的任何代码都可以访问它。

于 2012-05-24T19:50:14.420 回答
1

实际上在 Java 中有四种不同的访问修饰符,私有的、公共的、受保护的和特定于包的。“如果我错了,请纠正我,默认情况下变量是公共的” - 你错了,如果没有以不同方式声明的变量具有与包相关的访问权限。如果它设置为公共,那么即使在原始包之外,它也可以被其他类修改。这个网站 - http://javapapers.com/core-java/access-modifiers-in-java-explain/ - 可以为您提供有用的提示。实际上,一旦您阅读更多有关 OO 概念(例如封装)的内容,这将非常容易。然后您将了解访问修饰符的用途(以确保数据完整性)。

于 2012-05-24T19:50:25.443 回答
0

Java 提供了许多访问修饰符来设置类、变量、方法和构造函数的访问级别。四个访问级别是:

默认值:对包可见。不需要修饰符。

Private :仅对班级可见。

公开:对世界可见。所有类和包。

Protected :对包和所有子类可见。

如果程序员没有指定访问修饰符,则使用默认访问修饰符。

于 2014-04-21T05:49:36.057 回答
0

访问修饰符:

  • 公开 - {可以访问项目中的任何位置}

    Private - {只能在班级内访问}

    受保护 - {可以在包和子类中访问}

    默认 - {可以在包内访问}

非访问修饰符:

  • 静态 - {用于创建类变量和方法}

    Final - {用于创建最终的类、变量和方法}

    Abstract - {用于创建抽象方法和类}

    同步 - {用于线程}

要了解更多信息,请点击此链接

于 2014-04-21T05:15:33.840 回答
0

私有和公共 java 访问说明符在 java 中,私有访问说明符指定访问。

private 就像自己的家庭财产,只能使用属于哪个家庭。这意味着在类内部,方法和变量可以使用

.

公共就像政府财产,这意味着每个人都可以访问这些财产而无需任何代币

于 2015-08-17T10:49:41.723 回答
0

私有和公共java访问说明符。在java中,私有访问说明符指定访问。私有就像自己的家庭财产,只能使用属于哪个家庭。这意味着在类内部,方法和变量可以使用。公共就像政府财产,这意味着每个人都可以访问这些财产而无需任何代币

于 2015-08-17T10:08:28.127 回答