【问题标题】:What is the difference of declaring a method public or not?将方法声明为公开或不公开有什么区别?
【发布时间】:2014-08-29 09:37:55
【问题描述】:

我想知道如果我将方法声明为 public 或者像这样不声明它是否有任何区别:

void eat() {
  System.out.println("This food is great");
}

public void eat() {
  System.out.println("This food is great");
}

它有什么重要的价值吗?

【问题讨论】:

标签: java methods declaration public


【解决方案1】:

成员函数默认是包私有的。请参阅:access modifiers一个关键的区别(尽管对于初学者来说,公共和包私有之间的区别可能不是很明显)。了解访问修饰符对于任何 OO 编程语言都至关重要。

【讨论】:

  • 默认情况下它们在 c++ 中是私有的。在 java 中,它们是默认可访问的包
  • 谢谢!无法解除 C++ 模式。
【解决方案2】:

来自 java 文档 (http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)

如果一个类没有修饰符(默认,也称为包私有), 它仅在其自己的包中可见(包被命名为 相关类...)

如果您明确说明,我相信这称为package

【讨论】:

    【解决方案3】:

    可以使用以下四种不同的access levels 之一声明 Java 方法:publicprotecteddefault(即没有显式访问级别,也称为package-private)和private

    任何对象都可以调用公共方法,而包私有方法只能由与接收对象的类在同一package 中定义的类的实例调用。

    【讨论】:

      【解决方案4】:

      public - 任何人,无处不在

      默认(无修饰符) - 仅在包和此类中


      您可以从另一个类/子类(子类)/另一个包/模块(如果存在依赖项)调用带有 public 修饰符的方法

      否则,默认 - 您只能从此类(内部调用)和另一个包中调用此方法

      【讨论】:

        猜你喜欢
        • 2018-08-08
        • 2019-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        • 2011-01-04
        • 2018-03-19
        相关资源
        最近更新 更多