Java 类和内部类访问修饰符

Java 类和内部类访问修饰符,java,Java,这可能是一个重复的问题。 但我需要一个明确的答案。 我很困惑 例如: 我有课要显示时间 import java.util.Date; **public** class DateDisplay { public static void main(String[] args) { Date today = new Date(); System.out.println(today); } } 同一包中的任何类都不会扩展该类。 为什么我不能在priv

这可能是一个重复的问题。 但我需要一个明确的答案。 我很困惑

例如: 我有课要显示时间

import java.util.Date;

**public** class DateDisplay {

    public static void main(String[] args) {
        Date today = new Date();
        System.out.println(today);
    }
}
同一包中的任何类都不会扩展该类。 为什么我不能在private声明一个类

为什么JAVA不允许我将类声明为私有类?这背后的原因是什么

我的第二个问题是我应该在哪里使用内部类?
内部类的用途是什么?

回答第一个问题:如果要完成此任务,请定义一个包含私有类的公共/受保护类。因此,私有类只能在其类内访问

Example:
public class x
{
  private class y
  {
  }
}
这里y类只能在x类中访问

我想这也回答了你的第二个问题, 有关更多信息,请参见

类上的访问修饰符不仅指定可以扩展类的位置;它们还指定类的使用位置

private
表示:只能在类本身内部访问。顶级类是
私有的
,这是没有意义的,因为这意味着您根本无法使用该类-任何其他类都无法使用它

如果要使包外的类无法访问某个类,请使用默认访问级别(根本不指定访问修饰符):


但是请注意,具有
main
方法的类应该是
public

对于私有(顶级)类,您会怎么做?它将无法从任何地方访问。每个问题一个问题。@downvoter:请解释。我想知道投票的原因。只是问为什么编译器不允许我们将类声明为私有。
// Only accessible within the same package
class DateDisplay {
    // ...
}