【问题标题】:Class and Inner class access modifier [duplicate]类和内部类访问修饰符[重复]
【发布时间】:2016-08-27 01:26:14
【问题描述】:

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

对于 EG: 我有课要显示时间。

import java.util.Date;

**public** class DateDisplay {

    public static void main(String[] args) {
        Date today = new Date();
        System.out.println(today);
    }
}

同一个包中的任何一个类都不会扩展这个类。 为什么不能私下声明类?

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

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

【问题讨论】:

  • 私人(顶级)课程会做什么?它将无法从任何地方访问。
  • 每个问题一个问题。
  • @downvoter:请解释一下。不是为了这个问题,至少有投票的理由。
  • 我想知道这个原因。只是问为什么编译器不允许我们将类声明为私有。

标签: java


【解决方案1】:

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

Example:
public class x
{
  private class y
  {
  }
}

这里的类 y 只能在类 x 中访问

我想这也回答了你的第二个问题, 查看更多信息
https://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html

【讨论】:

    【解决方案2】:

    类上的访问修饰符不仅指定可以扩展类的位置;他们还指定了可以在哪里使用该类。

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

    如果你想让一个类不能被包外的类访问,那么使用默认的访问级别(根本不要指定访问修饰符):

    // Only accessible within the same package
    class DateDisplay {
        // ...
    }
    

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

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 2014-10-13
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多