【问题标题】:public constructor in a class without any modifier [duplicate]没有任何修饰符的类中的公共构造函数[重复]
【发布时间】:2013-08-05 19:13:56
【问题描述】:

当我们创建一个默认访问级别的“Hoge”类时, 有什么区别

 Hoge(){} 

public Hoge(){}

?

我知道该类在其他包中不可见,但在这种情况下, “公共”是如何运作的?

【问题讨论】:

  • 您的问题不清楚。 “作品”是什么意思?

标签: java


【解决方案1】:

official docs

                  Access Levels
------------+---------+---------+-----------+------
Modifier    |   Class | Package |  Subclass | World
------------+---------+---------+-----------+------
public      |     Y   |    Y    |     Y     |   Y
protected   |     Y   |    Y    |     Y     |   N
no modifier |     Y   |    Y    |     N     |   N
private     |     Y   |    N    |     N     |   N

构造函数是类的成员,构造函数的访问级别与其他成员相同。

【讨论】:

  • 看来 OP 已经知道了……
  • @assylias 然后他的问题很模糊。据我了解,这应该回答他。
【解决方案2】:

当班级成员是公开的时,这意味着每个人都可以看到它可以看到班级(而不是其他任何人)。

因此,如果您的类是包私有的,那么它的公共成员和包私有成员本质上具有相同的可见性。

我能想到的唯一区别是,如果该类稍后变为公共,则公共成员将对所有人(以及该类)可见,而包私有成员将保持原样。

【讨论】:

  • 如果你的类是包私有的,那么它的公共成员和包私有成员本质上具有相同的可见性。 => 不是真的。请参阅我发布的副本:可以使用公共构造函数实例化公共子类。使用包私有构造函数是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多