公共,私人和常规变量

时间:2015-04-24 14:18:31

标签: java variables

我只是关于它: 如果你有这样的课程:

public class a
{
    int x = 5;
    //setter & getter
}

除非是public,否则您无法从其他类访问x 所以,我知道,但如果是这样,为什么我需要使用private

如果没有public或其他情况static保留字,则无法在课外访问x变量。

所以,问题:
我需要private为什么? 我是否必须使用private或者它并不重要?

4 个答案:

答案 0 :(得分:3)

没有访问说明符与private不相同。

当您没有访问说明符时,如示例中所示,变量x可以在类a中访问,但也可以在与类{{1}相同的包中的所有其他类中访问}。

如果是a,则只能在课程private中访问,而不能在任何其他课程中访问。

请参阅Oracle Java教程中的Controlling Access to Members of a Class

答案 1 :(得分:0)

通过省略访问修饰符,您依赖于语言的默认值。

例如,在C#类中,变量默认为private。

答案 2 :(得分:0)

最常用的access modifiers无疑是publicprivate

public表示您将字段或方法公开给其他所有类。这对于让类执行其主要功能所必需的方法很有用,在某些情况下,对于需要可见的常量非常有用。

private表示您将该成员隐藏在其他所有类中。这对于其他类不了解的内部状态和函数很有用。这强制执行information hiding

的概念

其他修饰符protected和默认值(未提及修饰符时)是中间访问级别,在特定情况下可能很有用。

例如,当子类需要访问父(或基类)类中的方法并且您不希望其他类能够访问它时,您可以将其设为protected

默认访问修饰符比protected更具限制性,可用于仅允许从同一个包中访问。如果包中包含一组紧密相关的类,这些类需要通过您不想在其他地方公开的方法相互交互,甚至不包含在此包之外的子类,这可能很有用。

也许您也会受益于this article

答案 3 :(得分:-1)

这个问题已在this link的stackoverflow中得到解答。

java中有4种访问限制:

  • public:所有客户都可以访问该属性
  • private:该属性只能从类中访问,而不能从子类访问。
  • protected:可以从包和子类访问该属性。
  • no modifier:可以从类和包中访问该属性。

有必要声明可访问性范围以正确封装功能。