判断方法的使用范围20250102

判断方法的使用范围20250102

实数顺序选择法

package com.oop.demo01;public class Student {public static int add(int a, int b) {  //public 类下的public的静态方法return a+b;}static int sub(int a, int b) {    //public类 非public的静态方法return a-b;}public int devide(int a, int b) { //public 类下public的非静态方法return a/b;}void print_hello(){     //public类下 非public 非静态方法System.out.println("hello");}}
class Student_excellent {String name;String address;int age;public static void Student_name(String name) {  //非public类的public 静态方法System.out.println(name);}static void Student_address(String address){    //非public类的 非public 的静态方法System.out.println(address);}public void Student_age(int age) { //非public类的 public 的非静态方法System.out.println(age);}void Student_name_age( String name,int age) { //非public类下的非public 非静态方法System.out.println(name+" "+age);}
}

同包下另一个java文件

package com.oop.demo01;public class Teacher {public static void main(String[] args) {// 调用 Student 类的方法System.out.println(Student.add(5, 3));  // 调用 public static 方法System.out.println(Student.sub(10, 7)); // 调用包级私有 static 方法(同包内可访问)Student student = new Student();       // 实例化对象System.out.println(student.devide(9, 3)); // 调用 public 非静态方法// 调用 Student_excellent 类的方法Student_excellent.Student_name("Alice");   // 调用 public static 方法Student_excellent.Student_address("Beijing"); // 调用包级私有 static 方法(同包内可访问)Student_excellent studentEx = new Student_excellent(); // 实例化对象studentEx.Student_age(20); // 调用 public 非静态方法studentEx.Student_name_age("Bob",20);}
}class Teacher_excellent {public static void main(String[] args) {// 调用 Student 类的方法System.out.println(Student.add(2, 1));  // 调用 public static 方法System.out.println(Student.sub(5, 2));  // 调用包级私有 static 方法(同包内可访问)Student student = new Student();       // 实例化对象System.out.println(student.devide(8, 2)); // 调用 public 非静态方法// 调用 Student_excellent 类的方法Student_excellent.Student_name("Bob");     // 调用 public static 方法Student_excellent.Student_address("Shanghai"); // 调用包级私有 static 方法(同包内可访问)Student_excellent studentEx = new Student_excellent(); // 实例化对象studentEx.Student_age(25); // 调用 public 非静态方法studentEx.Student_name_age("jack",25);}
}

public类里方法访问权限总结

方法 修饰符 是否静态 同包访问 跨包访问
add(int a, int b) public 是(静态) 直接用 Student.add(3, 4) import 后可以用 Student.add(3, 4)
sub(int a, int b) 默认(package-private) 是(静态) 直接用 Student.sub(3, 4) 不可访问(即使 Student 类被导入)
devide(int a, int b) public 否(非静态) 实例化后用 new Student().devide(3,4) import 后实例化:new Student().devide(3,4)
print_hello() 默认(package-private) 否(非静态) 实例化后用 new Student().print_hello() 不可访问(即使 Student 类被导入)

非public类里方法的访问权限总结

方法 修饰符 是否静态 同包访问 跨包访问
Student_name(String name) public 是(静态) 直接用类名调用:Student_excellent.Student_name("John") 不可访问(类本身不能跨包)
Student_address(String address) 默认(package-private 是(静态) 直接用类名调用:Student_excellent.Student_address("123 St.") 不可访问(类本身不能跨包)
Student_age(int age) public 否(非静态) 实例化后调用:new Student_excellent().Student_age(18) 不可访问(类本身不能跨包)
Student_name_age( String name,int age) 默认(package-private 否(非静态) 实例化后调用:new Student_excellent().Student_name_age("John",18) 不可访问(类本身不能跨包)

这里为什么有两个mian函数?

在 Java 中,每个 main 方法都可以作为程序的独立入口点。这意味着如果一个项目中有多个包含 public static void main(String[] args) 方法的类,那么你可以分别运行这些类中的 main 方法,而不需要它们互相干扰。

你的代码中有两个类 TeacherTeacher_excellent,它们各自有一个 main 方法,因此:

  1. 每个 main 方法都是程序的入口点,可以独立运行。
  2. 在运行时,你可以选择运行 Teacher 类的 main 方法,也可以运行 Teacher_excellent 类的 main 方法。IDE(如 IntelliJ IDEA 或 Eclipse)会给出选择,或者通过命令行运行时可以指定具体的类。

为什么会有两个 main 方法?

这种情况在以下场景中比较常见:

  1. 测试不同的功能
    • 你可能会为每个类写一个 main 方法,用于测试该类的功能。
    • Teacher 测试 StudentStudent_excellent 的方法。
    • Teacher_excellent 也测试相同的内容,但可能用不同的数据。
  2. 模块化设计
    • 每个模块或类可以有自己的入口点,方便调试和测试。
    • 在开发过程中,多个类可能同时需要独立测试功能。
  3. 单独运行特定逻辑
    • 在较大的项目中,某些类可能有自己独立的运行逻辑,而不需要依赖于其他部分。

如何选择运行哪个 main 方法?

  1. 在 IDE 中

    • 右键单击你想运行的类文件(例如 Teacher.javaTeacher_excellent.java)。
    • 选择 "Run" 或 "Debug" 选项。
  2. 使用命令行

    • 编译所有文件:

      javac -d . *.java
      
    • 指定类名运行对应的

      main
      

      方法:

      java com.oop.demo01.Teacher
      

      java com.oop.demo01.Teacher_excellent
      

注意事项

  1. 代码组织问题
    • 如果项目最终需要部署或发布,建议保留一个主要的 main 方法作为入口点,其余的 main 方法可以删除或注释。
    • 多个 main 方法容易让代码显得混乱,尤其在大型项目中。
  2. 类的命名
    • 类名应该能够清晰表达其用途,比如 Teacher 类和 Teacher_excellent 类是测试类的话,可以考虑命名为 TeacherTestTeacherExcellentTest
  3. 单元测试的替代
    • 在现代 Java 项目中,通常使用单元测试框架(如 JUnit)来测试方法和类,而不是通过 main 方法。

你的代码完全可以运行,只要明确目标是测试功能或独立运行逻辑即可。如果你希望简化代码,可以选择保留一个 main 方法或者使用测试框架替代手动测试。

运行 Teacher.main()

public class Student {public static int add(int a, int b) {  //public 类下的public的静态方法return a+b;}static int sub(int a, int b) {    //public类 非public的静态方法return a-b;}public int devide(int a, int b) { //public 类下public的非静态方法return a/b;}void print_hello(){     //public类下 非public 非静态方法System.out.println("hello");}}

image-20250102230211990

输出结果

8
3
3
Alice
Beijing
20
Bob 20

运行Teacher_excellent.main()

class Teacher_excellent {public static void main(String[] args) {// 调用 Student 类的方法System.out.println(Student.add(2, 1));  // 调用 public static 方法System.out.println(Student.sub(5, 2));  // 调用包级私有 static 方法(同包内可访问)Student student = new Student();       // 实例化对象System.out.println(student.devide(8, 2)); // 调用 public 非静态方法// 调用 Student_excellent 类的方法Student_excellent.Student_name("Bob");     // 调用 public static 方法Student_excellent.Student_address("Shanghai"); // 调用包级私有 static 方法(同包内可访问)Student_excellent studentEx = new Student_excellent(); // 实例化对象studentEx.Student_age(25); // 调用 public 非静态方法studentEx.Student_name_age("jack",25);}
}

image-20250102230348146

输出结果

3
3
4
Bob
Shanghai
25
jack 25

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863136.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火绒(杀毒软件) v6.0.1.4 正式版

火绒这个软件很受极客们的欢迎,是一款小巧轻便的杀毒软件,功能也很丰富,运行安静,使用方便。也是果核很喜欢的一款杀毒软件,其火绒剑是一款非常强大的系统监控和调试工具,能帮助有电脑底层基础的用户快速排查问题。获取地址:https://www.dmjf.top/2255.html

Android AdGuard(广告拦截) v4.7.163 高级版

Adguard为你提供了一个可靠的、可管理的保护,就没有你们的参与滤波器加载网页。adguard移除所有烦人的广告,阻止危险网站的加载,也不会允许任何人在网上跟踪你的活动。获取地址:https://www.dmjf.top/2690.html

Windows编译QT6.4.3及使用

1. 下载QT6.4.3源码,并解压 Index of /archive/qt/6.4/6.4.3/singlehttps://download.qt.io/archive/qt/6.4/6.4.3/single/ 2.安装环境 * CMake 3.18 or later* Perl 5.8 or later* Python 2.7 or later* C++ compiler supporting the C++17 standard 3.打开windows的cmd cd…

ESP32-S3-N16R8在platformio中的开发板设置

前言 platformio现有的板子库里面没有ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)的开发板模型,直接强行套用,要么就是解锁不了8MB PSRAM,要么就下载后运行不起来。一、选用esp32-s3-devkitc-1开发板 先选用esp32-s3-devkitc-1作为开发板模型,点击Finish后务必耐心等待。 二…

《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis

《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis@目录8.Docker常规安装简介8.1 docker常规安装总体步骤8.2安装tomcat8.3 安装mysql8.3.1 docker hub上面查找mysql镜像8.3.2 从docker hub上(阿里云加速器)拉取mysql镜像…

Elasticsearch VS Easysearch 性能测试

压测环境 虚拟机配置 使用阿里云上规格:ecs.u1-c1m4.4xlarge,PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围:461GiB - 64TiB)vCPU 内存 (GiB) 磁盘(GB) 带宽(Gbit/s) 数量16 64 500 5000 24Easysearch 配置 7 节点集群,版本:1.9.0实例名 内网 IP 软件 vCPU JVM 磁…

win10/win11 用 ncpa.cpl 命令快速打开网络连接

前言:Win11系统配置网络适配器好费劲的,每次都要在设置找半天 得,直接来,快捷键安排1、开始 -> 运行 Win + R 弹出 运行 窗口2、输入命令 ncpa.pcl并回车 3、见证奇迹QQ:1061767621 Q群:215481318

基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真

1.课题概述 基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真。2.系统仿真结果3.核心程序与模型 版本:MATLAB2022a 4.系统原理简介最大功率点跟踪(Maximum Power Point Tracking, MPPT)是光伏发电系统中至关重要的技术,用于确保光伏电池在其工作条件下输出最…

网络_网络分层模型和应用协议

本文主要介绍了网络的分层模型和应用层的协议,分层模型有四层、七层、五层这几种模型,应用层协议主要涉及 URL 和 HTTP,并且介绍了请求和响应以及他们的行、头、体网络分层模型和应用协议 分层模型 为了解决复杂问题往往分层 经过不断的演化,网络最终形成了五层模型:MAC像…

1.2 可压缩流:激波和膨胀扇

1.2 可压缩流:激波和膨胀扇 前言 欢迎观看《Bang Dream! Ave mujica》,一部超好看的少女乐队动漫,从2025.1.2开始,每周四晚10点更新。 哇嘎利马斯 大量玩梗注意 AA笔记主要参考刘永学主编《空气动力学》,讲的物理概念很清晰易懂,推荐给大家。 扰动的传播 接下来我们讨论扰…

使用ClosedXML实现Excel导入导出

使用ClosedXML实现Excel导入导出 写在开头 游览Dotnet 基金会中的项目时,发现了这个库,Github 链接,它的性能非常好,详细见下图话不多说,直接上代码吧! 导出 后端: public static byte[] Output<T>(List<T> data, string sheetName) {using var workbook = …

离线环境一步部署OCR文字识别程序

前言 百度、阿里等的OCR接口需要联网环境,并且超过免费/试用次数后需要付费。一般政务项目因为信息安全要求都部署在独立内网,有没有离线免费的OCR实现方案?下文基于EasyOCR实现一步部署,可下载直接使用。 EasyOCR EasyOCR支持离线部署,可免费使用(支持Apache-2.0 licens…