ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

类如何存放在多文件并可以使用(2021-9-20)

2021-09-20 17:05:45  阅读:131  来源: 互联网

标签:调用 20 study 源文件 存放 2021 print java public


开发工具

eclipse

在这里插入图片描述

一些需要注意的东西

创建类的时候需要注意下创建路径,举个例子,如下图所示

在这里插入图片描述
注意看CLASS.java是在study/src下的,而src下可以看到还有study和MathinGame两个文件夹,这两个文件夹这就是“包”package

包的概念还不太理解,但是经过摸索发现一个有趣的事情
在这里插入图片描述

在src的study包内的java文件必须要带上package + 自身包名才能运行,但是目录直接在src下的java文件则不需要,如果只是写一份代码用来写作业交题目的话直接在new界面建class就行,不然带着包名提交代码一不小心把包名也带上程序在后台是运行不了的。

那么这些包之间怎么合作运行一段程序呢?再举个例子

下图是文件路径展示:

在这里插入图片描述

我们可以看到study工程下src文件有一个MathinGame包和一个study包,MathinGame包下有一个add类,study包下有一个print类文件和一个study类文件

先研究study类内部的情况
现在study作为主类,要调用print类文件的speak方法,然后自己再以一个System.out.pringln()语句去打印些东西,那么首先就需要import一下print类文件

在这里插入图片描述
speak呢,则是这样的
在这里插入图片描述
运行一下:
在这里插入图片描述
顺理成章的如愿以偿

那么有个问题,为什么print类的定义是public class print,直接定义成class print不行吗?

不妨实验一下

在这里插入图片描述
没有问题,居然成功了

那么speak方法能不能不定义成public void speak,而定义成void speak呢?
在这里插入图片描述
居然也可以?那public还有什么意义?
我们试试一个类文件写两个类,看看会发生什么
在这里插入图片描述
我们假设public什么用处也没有,然后study这边让他调用完自己的System输出之后在调用print2的Speak2方法

在这里插入图片描述

可以看到已经报错

实际上,java允许在一个java源文件中编写多个类。但其中的多个类最多只有一个类使用public修饰,如果源文件中有多个类。但没有public类,那么源文件的名字只要和某个类的名字相同。并且扩展名是java就行,如果一个类是public类,那么他的类名必须和源文件名称相同

也就是说,这个print2类理论上是不能在study的main类调用的,不过可以经过print类间接地调用
在这里插入图片描述

记得把main类的speak2调用注释掉
在这里插入图片描述
结果如下

在这里插入图片描述
ok,猜想正确

得出结论:
1、main类想调用“同包源文件”需要import + 自身包名.调用文件名(但是在package下不是必须)
2、一个java源文件有且只有一个public类(除非这个源文件里啥也没有且不需要使用),如果没写明谁是public类,哪个类的类目与源文件名一致,哪个类就是public类,这个文件其他的类都是给 public类服务的

同包研究完了,跨包呢?

现在假设study要调用MathinGame的add类帮忙算个2+3;
假设adds不是public方法,我们看看会怎么样
在这里插入图片描述

在这里插入图片描述
可以看到报错信息了
在这里插入图片描述
大致意思是adds方法“不可见”

在这里插入图片描述
方法加上public之后就可以在main方法调用了

在这里插入图片描述

总结下public的用法
1、用在类名是表示当前文件的“主心骨类”,表示整个文件的类是在public类的管理下的。
2、用在方法名是表示这个方法能否被其他包使用

标签:调用,20,study,源文件,存放,2021,print,java,public
来源: https://blog.csdn.net/sdibt_xhx/article/details/120391651

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有