Day30--如何引用其他的类
Day30--如何引用其他的类
-
同一包内引用其他类
-
无需导入(在某些情况下):如果多个类在同一个包中,并且没有使用任何访问限制(如
private)阻止访问,在一个类中可以直接创建对象然后使用另一个类。例如,有ClassA和ClassB在同一个包com.example中: -
package com.example; class ClassA { public void methodA() { ClassB objB = new ClassB(); // 可以直接使用ClassB的方法(假设ClassB有合适的方法) objB.methodB(); } } class ClassB { public void methodB() { System.out.println("This is methodB in ClassB"); } } -
在
ClassA的methodA方法中,直接通过new ClassB()创建了ClassB的对象,并调用了ClassB的methodB方法。因为它们在同一个包中,所以可以直接访问。 -
需要导入(当存在命名冲突等情况时):如果在同一个包中有同名的类或者想要更清晰地表明类的引用,可以使用
import语句(虽然在这种情况下不是必须用于访问)。例如,如果有两个ClassB类定义在不同的目录但在同一个包中(这可能是由于复杂的项目结构导致),可以这样写: -
package com.example; import com.example.someSubDirectory.ClassB; class ClassA { public void methodA() { ClassB objB = new ClassB(); objB.methodB(); } } -
这里
import语句明确指出了要引用的ClassB是来自com.example.someSubDirectory目录下的。
-
-
不同包内引用其他类
-
基本引用步骤:如果要引用不同包中的类,首先需要使用
import语句导入该类。例如,ClassC在com.example.package1包中,想要引用com.example.package2包中的ClassD: -
package com.example.package1; import com.example.package2.ClassD; class ClassC { public void methodC() { ClassD objD = new ClassD(); // 可以使用ClassD的方法(假设ClassD有合适的方法) objD.methodD(); } } -
先通过
import com.example.package2.ClassD;导入ClassD类,然后就可以在ClassC的methodC方法中创建ClassD的对象并调用其方法。
-
3.需要注意:
如果多个类在同一个包中,并且没有使用任何访问限制(如private)阻止访问,在一个类中可以直接创建对象然后使用另一个类。我对这句话有一个疑问。比如,在basic包里面有一个类Demo01;在array包里面有一个类ArrayDemo01;而basic和array都是在www包里面的。那么,Demo01和ArrayDemo01算是在同一个包里面吗?在Demo01类中可以直接创建对象然后使用ArrayDemo01类吗?
这是不能的。!!!!!!!!!!!
-
包的概念和层次结构
- 在Java中,包(package)是一种组织类和接口的机制,用于避免命名冲突并提供访问控制。包是有层次结构的,类似于文件系统中的目录结构。
- 例如,你提到的
www是一个顶级包,basic和array是www包下的子包。
-
不同子包中的类访问规则
- 即使
basic和array都在www包下,Demo01(在basic包中)和ArrayDemo01(在array包中)并不在同一个包中。 - 在Java中,不同子包中的类默认是不能直接互相访问的,就像
Demo01类不能直接创建ArrayDemo01类的对象并使用。如果要访问,需要满足以下条件之一:- 使用
import语句和完全限定名:- 可以在
Demo01类中通过import www.array.ArrayDemo01;导入ArrayDemo01类(假设类的访问权限允许),然后就可以创建ArrayDemo01类的对象并使用。或者不使用import语句,而是在创建对象时使用完全限定名,例如www.array.ArrayDemo01 arrayObj = new www.array.ArrayDemo01();。
- 可以在
- 修改访问权限:
- 如果
ArrayDemo01类的构造函数和需要访问的成员有足够宽松的访问权限(如public),并且你正确地处理了包的导入或使用完全限定名,就可以访问。例如,如果ArrayDemo01类的构造函数是public,并且你已经正确导入或者使用完全限定名,就可以在Demo01类中创建ArrayDemo01类的对象。
- 如果
- 使用
- 即使

浙公网安备 33010602011771号