包(package)
什么是包?包是用于将完成不同功能的类分门别类,放在不同的目录(包)下。
包的命名规则:将公司的域名反转作为包名。如www.csdn.com就写成com.csdn,对于包名,我们每个字母都需要小写,也可以大写,但一般不这样做。
如果定义类的时候没有使用package,那么Java就认为我们所定义的类位于默认包里面(default package)。
编译带有package声明的java源文件有两种方式:
1) 直接编译,然后根据类中所定义的报名,逐一手工建立目录结构,最后将生成的class文件放到目录结构中,一般很少使用,比较麻烦。
2) 使用编译参数–d,方式为javac –d.源文件.java,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构
如果有两个包名,分别是aa.bb.cc与aa.bb.cc.dd,那么我们称后者为前者的子包。
导入(import)
导入的意义是将使用package分离的各个类导入回来,让编译器能够找到所需要的类。
import的语法:
1) import com.csdn.PackageTest;
2) import com.csdn.*,表示导入com.csdn包下面的所有类。
注意:import aa.bb.**并不会导入aa.bb.cc包下面的类。这时需要这样写:
importaa.bb.*;
import aa.bb.cc.*;
也就是说,bb下面还有个目录(文件夹)是cc也存放一些类,但bb只能导入bb里类,不能再导入bb里子目录里的类,还得再import aa.bb.cc.*;
类,包和导入总结:
关于pcakage,import,class的顺序问题:
a) 首先需要定义包(package),可选
b) 接下来使用import进行导入,可选
c) 然后才是class或interface的定义。
还有一点,如果两个类在同一个包下面,那么则不需要导入,直接使用即可。
访问修饰符(access modifier)。
访问修饰符就是控制类被访问的权限,下面我们具体分析public,protect,默认以及private
1) public(公共的):被public所修饰的属性和方法可以被所有类访问
2) protect(受保护的):被protect所修饰的属性和方法可以在类内部,相同包以及该类的子类所访问。
3) private(私有的):被private所修饰的属性和方法只能在该类内部使用
4) 默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。
instanceof关键字
instanceof关键字是判断某个对象是否是某个类的实例。我们一定要记住这个关键字
语法形式:引用名 instanceof类名(接口名)
instanceof返回的是一个boolean值。下面,我们分析以下代码:
publicclassInstanceOfTest {
publicstaticvoidmain(String[] args) {
Aa=newA();
System.out.println(ainstanceof A);//,很显然,打印true
Ab=newB();
System.out.println(binstanceof A);//打印true,为什么,我们下面讲解总结
}
}
class A{
}
class BextendsA{
}
总结:我们看到System.out.println(binstanceofA);结果也是为true,因为B是A的子类,根据继承,子类就是父类,因此B也可以看作是A的实例。