成员变量和成员方法的继承与成员的访问控制符相关,访问控制符决定了子类是否可以继承父类的成员。
访问控制符还与另外一个概念相关,就是包(package)。
1、什么是包
简单的理解,包是对类的分类,把功能相关的类放在相同的包中,相互之间访问的时候比较方便。
例如之前介绍过的String属于java.lang包,java.lang就是包名,很多基本的类都在这个包中,包括前面介绍的Object类。
再例如,前面介绍过的日期类java.util.Date,java.util就是包名,Date是类名。java.util是工具包,学习Java,这个包中的类都应该非常熟悉。
在访问一个类的时候一定要指出包名,有时候称“全类名”或者“完整的类名”,意思就是包含包名的类名。
不同的包里可以有相同的类,通过包名来区分不同的类。例如java.sql.Date和java.util.Date,都是表示日期的类。
2、包的定义
使用package定义包,例如:
package ch12;
包名也可以由多部分组成,多部分之间使用“.”隔开,例如:
package ch12.test;
包的各个组成部分应该尽量有意义,对于一些通用的组件,在命名包的时候要尽量的保持全世界唯一,所以通常会在包名中包含比较丰富的信息,例如国家标识、公司的类型、公司的名字、项目的名字等。例如:
com.mysql.jdbc
cn.neusoft.ufs.common
注意:包的声明必须是Java文件中的第一行有效行,下面的代码是错误的。
import java.util.*;
package ch12;
public class MyTest{
...
}
3、包的引用
在某个类中要使用另外一个类的时候,需要声明这个类,通过import声明,如果要访问的类和当前类在同一个包中,则不用引入。看下面的代码:
package ch11;
public class A{
...
}
package ch12;
public class B{
...
}
package ch12;
import ch11.A;
public class C{
private A a;
private B b;
...
}
在类C中要访问类A和类B,因为类A和当前类C位于不同的包,所以需要引入类A,而类B与类C位于相同的包,所以不用引入。
包ch11,包ch11.action,包ch11.common之间有关系吗? 请记住:这些包之间没有任何关系。
包对类和成员的访问有什么影响以及有什么方便之处,请听下回讲解。