当前位置: 首页 > news >正文

【java】类声明的两种形式

在 Java 中,类的声明有两种形式:

  1. public class Test

  2. class Test

它们的区别主要在于访问权限文件名的要求。下面我会详细解释这两种形式的区别。


1. public class Test

  • 访问权限

    • public 表示这个类是公共的,可以被其他包(package)中的类访问。

    • 如果没有 public,类的访问权限是包级私有(默认),只能被同一个包中的类访问。

  • 文件名的要求

    • 如果一个类被声明为 public,那么它的文件名必须与类名完全相同

    • 例如,public class Test 必须保存在 Test.java 文件中。

  • 使用场景

    • 当你希望这个类被其他包中的类使用时,需要声明为 public

示例

java

// 文件 Test.java
public class Test {
    public void sayHello() {
        System.out.println("Hello!");
    }
}

2. class Test

  • 访问权限

    • 如果没有 public,类的访问权限是包级私有(默认),只能被同一个包中的类访问。

    • 其他包中的类无法访问这个类。

  • 文件名的要求

    • 文件名不需要与类名相同。

    • 一个 .java 文件中可以包含多个非 public 类,但只能有一个 public 类。

  • 使用场景

    • 当你希望这个类只在当前包中使用时,可以不声明为 public

示例

java

// 文件 MyFile.java
class Test {
    void sayHello() {
        System.out.println("Hello!");
    }
}

class AnotherClass {
    // 其他代码
}

关键区别总结

特性public class Testclass Test
访问权限公共的,可以被其他包访问包级私有,只能被同一个包中的类访问
文件名要求文件名必须与类名相同(Test.java文件名可以与类名不同
一个文件中的数量一个文件中只能有一个 public 类一个文件中可以有多个非 public 类
使用场景需要被其他包中的类访问时使用只在当前包中使用时使用

举个例子

场景 1:public class Test

java

// 文件 Test.java
public class Test {
    public void sayHello() {
        System.out.println("Hello!");
    }
}
  • 这个类可以被其他包中的类访问。

  • 文件名必须是 Test.java

场景 2:class Test

java

// 文件 MyFile.java
class Test {
    void sayHello() {
        System.out.println("Hello!");
    }
}

class AnotherClass {
    // 其他代码
}
  • 这个类只能被同一个包中的类访问。

  • 文件名可以是 MyFile.java,不需要与类名相同。


总结

  • public class Test

    • 类是公共的,可以被其他包访问。

    • 文件名必须与类名相同。

  • class Test

    • 类是包级私有的,只能被同一个包中的类访问。

    • 文件名可以与类名不同。

选择哪种形式取决于你的需求:

  • 如果类需要被其他包访问,使用 public class

  • 如果类只在当前包中使用,使用 class

相关文章:

  • 7777777777
  • ChatGPT各模型版本对比分析
  • 《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师
  • 深入xtquant:实时行情订阅与数据获取的实战指南
  • 一、哈希——1. 两数之和
  • HTML之JavaScript DOM操作元素(2)
  • 【Opensim】软件显示问题(比例不对,按键遮挡,显示不完整)
  • 深入浅出MySQL:概述与体系结构解析
  • DBAPI如何优雅的实现分页查询功能
  • 根据音频中的不同讲述人声音进行分离音频 | 基于ai的说话人声音分离项目
  • Python|OpenCV-实现人物眨眼检测(21)
  • 【Linux基础】Shell脚本
  • 常用的几种编码方式
  • c++———————————————c++11
  • 通俗理解嵌入式
  • 本地部署AI模型 --- DeepSeek(一)
  • 计算机网络基础:DOS命令、批处理脚本常见命令
  • Linux动静态库
  • *PyCharm 安装教程
  • for循环可遍历但不可以修改列表原因分析
  • 专访|200余起诉讼,特朗普上台100天,美国已进入宪政危机
  • 一场与纪录并行的伦敦马拉松,超40项新世界纪录诞生
  • 第五届全国医院人文管理路演在昆山举办:患者体验才是温度计
  • 国家卫健委:工作相关肌肉骨骼疾病、精神和行为障碍成职业健康新挑战
  • 国家发改委答澎湃:将指导限购城市针对长期摇号家庭和无车家庭等重点群体定向增发购车指标
  • 国内生产、境外“游一圈”再进保税仓,这些“全球购”保健品竟是假进口