单个文件中的多个类:此处不允许修饰符 private

2024-03-29

我无法理解为什么这段代码不能编译:

class A {
    public static void main(String[] args) {
        System.out.println("hi");
    }
}

private class B {
    int a;
}

我将内容保存在名为的文件中A.java- 我收到一个错误:

modifier private not allowed here // where I have defined class B

当我尝试将 B 设置为私有和受保护时,都会发生这种情况。有人可以向我解释一下这背后的原因吗?

Thanks !


来自Java语言规范 http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.1.1:

访问修饰符 protected 和 private 仅适用于直接封闭类声明中的成员类

所以是的,顶级类声明不允许使用 private 和 protected 修饰符。

顶层课程可能是公开的,也可能不是公开的,而private and protected不允许。如果该类被声明为公共,则可以从任何包中引用它。否则只能从同一个包(命名空间)中引用它。

私有顶级类没有多大意义,因为任何类都无法引用它。根据定义,它将无法使用。private对于成员类来说,使一个类仅可引用它的封闭类是可以的。

受保护的成员类可以从 (1) 同一包的任何类和 (2) 封闭类的任何子类引用。将这个概念映射到顶级类是很困难的。第一种情况由没有访问修饰符的顶级类覆盖。第二种情况不适用于顶级类,因为没有封闭类或来自与该类有特殊关系的不同包的其他内容(如子类)。正因如此我认为,protected不允许,因为它的基本概念不适用于顶级类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单个文件中的多个类:此处不允许修饰符 private 的相关文章

随机推荐

  • Facebook JSON 字符串的反序列化?

    我无法从运行 fql 查询后生成的 JSON 字符串中提取 facebook 用户的 work history 从属关系和 current loc 我已经上过这门课 public class Data public CurrentLocat
  • UI自动化切换窗口

    我注意到 setforegroundwindow 可能非常不稳定 无论你怎么做 我注意到 在可能的情况下使用 UIAutomation 似乎可以改善情况 例如 获取 WindowPattern 并使用类似以下内容 windowPattern
  • .setAttribute 与 .attribute= 背后发生了什么?

    描述 我正在使用简单javascript设置 a 的值input 我使用了多种看似相同但结果不同的方法 这是一个例子 HTML
  • Spring MVC 请求映射不起作用

    我想用一个控制器创建简单的 hello world 应用程序 没有任何类的普通 spring 可以工作 但是当我添加控制器 更改 xml 文件 按照分步教程 并尝试打开 localhost project hello html 时 它会抛出
  • 从 Android 应用程序中的本机库访问根文件(/system、/dev)

    我有一个原生库 它将尝试在 Android 设备的 system dev 文件夹中创建文件 使用 open fopen 等 现在我已经使用 JNI 和 NDK 将库与 A ndroid 应用程序集成 但在根文件夹中创建文件失败 我尝试从本机
  • 可以使用 Flutter 复制 iOS App Store 转换吗?

    是否可以使用Flutter复制iOS App Store的转场效果 我尝试通过将两个标签放入两个小部件的根布局中来使用英雄动画 但动画看起来很卡顿或者不是我所期望的 但这样做的好处是 当我使用 MaterialPageRoute 时 我可以
  • Logger 和 System.out.println 的输出不按顺序

    我想要记录器的输出inputstream在 Eclipse 控制台中 但每次执行的时候 结果的顺序总是不一样 我有几个类 其中一个主类可以调用其他类 并且我将记录器放入每个方法中进行调试 我将结果打印到控制台 我也有检索的方法inputst
  • 在 javascript 中使用 .css() 设置细边框

    因此 当用户单击页面上的按钮时 我试图在按钮周围设置边框 要设置处理程序 我要 reportButtons click function change border color 我尝试了两种方法来更改其中按钮的边框颜色 第一种方法是使用 c
  • Asp.net mvc 表单发布和分页

    我有一个操作方法 搜索 在发布表单时调用该方法 根据表单的发布值 可能有数千个搜索结果 我想逐页显示搜索视图 但如何知道第一次发布的表单值是什么 这样我就可以通过传递页面参数来调用搜索视图 最好的方法是接受系统的无状态性 每次渲染视图时 请
  • 如何将 C# 转换为 C++ [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有人可以帮我将 C 转换为 C 吗 这是一个例子 using System using System Net using System
  • Google数据存储-在没有热点的情况下对创建日期字段进行索引

    我正在使用 Google Datastore 需要查询它来检索一些实体 这些实体需要按从最新到最旧的顺序排序 我的第一个想法是拥有一个包含时间戳的 date created 属性 然后我会索引该字段并对该字段进行排序 这种方法的问题是它会导
  • 像 Chanel 应用程序一样自定义集合视图布局

    我正在尝试做一个自定义布局 例如香奈儿应用程序 您可以在应用程序商店中找到该应用程序 https itunes apple com us app chanel fashion id409934435 mt 8 https itunes ap
  • 使用 simple_form 和rails 4 创建多个嵌套表单

    我正在尝试使用以下模型创建一个简单的应用程序 类别 has many gt 问题 has many gt 答案 我有以下用于创建类别 问题的代码 categories form haml html simple form for categ
  • 使用 AWK 进行字数统计

    我有如下文件 这是一个示例文件 该文件将用于测试 this is a sample file this file will be used for testing 我想用AWK来统计单词数 预期输出是 this 2 is 1 a 1 sam
  • 为什么 smartmatch 根据操作数的顺序返回不同的值?

    我有一个数组 以下测试返回 true 1 a 然而 以下测试返回 false a 1 我在 学习 Perl 中读到 智能匹配运算符两侧的值的放置并不重要 但显然在上面的代码中它确实如此 这是为什么 这两个语句检查的是不同的东西吗 除了其他答
  • 经典C++(带类的C)的调用/返回功能,哪些现代语言具有它?

    第 57 页C 的设计和演变 https rads stackoverflow com amzn click com 0201543303 Stroustrup 博士谈到了一个最初是 C with Classes 的一部分的功能 但它不是现
  • 混合 C++ 和 Objective-C

    我使用 C 作为应用程序主干 使用 Objective C 作为 GUI 这很好 但是当谈到在 Objective C mm 文件 中将这些代码混合在一起时 我有几个问题 1 我可以将 STL 容器与 Objective C 或 Cocos
  • TabView 内的 SwiftUI iOS 16 NavigationPath 警告:NavigationAuthority

    我有一个TabView每个选项卡都有自己的NavigationPath我正在处理一个ObservableObject MainActor final class Router ObservableObject Published var h
  • 如何通过 ID 以外的其他方式获取 Backbone.js 模型?

    Backbone js 通过 ID 获取模型的默认 RESTful 方法非常简单且直接 但是 我似乎找不到任何通过不同属性获取模型的示例 如何通过不同的属性获取 Backbone js 模型 var Widget Backbone Mode
  • 单个文件中的多个类:此处不允许修饰符 private

    我无法理解为什么这段代码不能编译 class A public static void main String args System out println hi private class B int a 我将内容保存在名为的文件中A