java中包到底是什么意思?包访问权限又是什么意思,有C++基础。
包访问是说我可以在first.java中访问second的某些方法或生成D E F对象吗? 展开
是否是说 first.java中有A B C 三个类,second.java中有D E F 三个类,那么first和second是两个不同的包?不是,这是java文件的组织方式,因为java强制要求一个public类必须在一个同名的文件中,但是多个包访问权限的类是可以在同一个文件夹中的
First.java
class A{
void print(){
System.out.println("A");
}
}
class B{
public void print(){
System.out.println("B");
}
}
class C{
public void print(){
System.out.println("C");
}
}
Second.java
class E{
public void print(){
System.out.println("E");
}
}
class D{
public void print(){
System.out.println("D");
}
}
class F{
public void print(){
System.out.println("F");
}
}
A B C D E F都是在同一个包中,而不是ABC在firstFirst包中,而DEF在Second包中
改写Second.java
package package2;
class E{
public void print(){
System.out.println("E");
}
}
class D{
public void print(){
System.out.println("D");
}
}
class F{
public void print(){
System.out.println("F");
}
}
你现在first.java中是无法访问EDF类的,这才是包的概念,另一个包中的(First.java中的ABC是在默认包中也是另外一个包)是无法访问EDF类的,因为他们是包访问权限,类只有两种权限,包访问权限和public权限
包访问是说我可以在first.java中访问second的某些方法或生成D E F对象吗?
是说如果first.java和second.java是在同一个包中,那么是可以的,但是如果不在同一个包中,并且那些类或方法是包访问权限,那是没有办法访问的
在添加一个类Third.java
package package2.third;
class Third{
public void print(){
System.out.println("E");
}
}
class D{
public void print(){
System.out.println("D");
}
}
class F{
public void print(){
System.out.println("F");
}
}
这些类都是包访问权限,那么E.java中的类可以访问吗?不可以,包没有嵌套的概念,即使Third.java是在E.java的的子包中即E.java在package2中,而Third.java在package2.third
java中类的访问权限(不是内部类,内部类必须另加讨论)只有public和包访问权限,要么所有包中的类和方法都可以访问,要么只有在同一个包中的类才能访问,并且
package package2.third;
是在package2.third包中
package package2;
实在package2包中,这是两个不同的包,即使在电脑上third文件夹是在package2文件夹中
java里边 的包就相当于一个文件夹,比如我们电脑硬盘里边,一般都会创建许多文件夹来存放不同的文件。比如
D盘下边有 视频文件夹 音乐文件夹 游戏文件夹 等,能够方便我们管理这些不同的文件。
java的包也类似这种,一个项目 project 里边会分成多个模块,每个模块有多个类class组成,
为了方便管理这些类,我们把每个模块创建成一个包 package。
你说的包访问权限,应该是java类中的属性,修饰属性有限定符 public protected default private
用他们修饰的属性,具有不同的访问权限。
包:如果要用包的话,比如A.java在com.a.b.c下。
在.java文件中第一行就写pacakge com.a.b.c;
因为如果所有的java文件都放到一起不方便管理,所以就有了包的概念,就是方便管理类的。
假定A.java在com.a.b;B.java在com.a.c;
如果B要使用类A的话,需要通过import com.a.b.A;来引入A才可以访问。