8.1Java类包
在Java中每定义好一个类,通过Java编译器进行编译后,都会生成一个扩展名为.class的文件,当程序的规模逐渐扩大时,就很容易发生类名称冲突的现象。JDK API提供了成千上万个具有各种功能的类。
8.1.1类名冲突
Java中每个接口或类都来自不同的类包,无论是Java API中的类与接口还是自定义的类与接口,都需要隶属于某一个类包,这个类包包含了一些类和接口,如果没有包的存在,管理程序中的类名称将是一件非常麻烦的事情,如果程序只由一个类组成自然不会出现类名重叠的问题,但是随着程序的类数量增加,难免会出现一些问题,如编译器不允许存在同名的类文件等 。
8.1.2完整的类路径
一个完整的类名需要包名与类名的组合,每个类都隶属于一个类包,只要保证同一类包中的类名不同名,就可以有效地避免同名类冲突的情况。
在Java中采用类包机制非常重要,类名不仅可以解决类名冲突问题,还可以再开发庞大的程序时,帮助开发人员管理庞大的应用程序组件,方便软件复用。
8.1.3创建包
在类中指定包名时,需要将package表达式放置在程序的第一行,它必须是文件中的第一行非注释代码。使用package关键字为类指定包名之后,包名将会成为类名中的一部分,预示着这个类必须指定全名。Java包的命名规则是全部使用小写字母。
8.1.4导入包
1,使用import关键字导入包
如果某个类中需要使用Math类,那么如何告知编译器当前应该使用那一包中的Math类,可以使用Java中的import关键字指定,例如,如果在程序中使用import关键字导入com.mr.Math类,在程序中使用Math类时就会自动选择com.mr.Math类,import关键字语法如下:
在使用import关键字时,可以指定类的完整描述,如果为了使用包中的更多类,可以使用import关键字指定时在包指定后加*,这表是可以在程序中使用该包的所有类。
2,使用import导入静态成员
import关键字除导入包外,还可以导入静态成员,代码如下:
8.2.1
在一个类中使用内部类,可以在内部类直接存取其中所在类的私有成员变量。成员内部类语法如下:
class OuterClass{//外部类
calss lnner Class{//内部类
}
}
在成员内部类中可以随意使用外部类的成员方法及成员变量,尽管这些类被修饰为private 尽管成员变量i以及成员方法g()都是外部类中被修饰为private但在成员内部类中可以直接使用,内部类的示例一定要绑定在外部类的实例上,如果从外部类中从初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上,内部类初始化与其他类的初始化方式相同。
8.3使用成员内部类模拟发动机点火代码如下:
成员内部类不止可以在外部类中使用,在其它类中也可以使用。在其他类中创建类对象的语法非常特殊语法如下:
外部类 outer=new 外部类();
外部类.内部类 inner =outer.new内部类();
使用this关键字获取内部类与外部类的引用。
8.2.2匿名内部类
匿名类是在创建一种写法。对象时才会编写类体的一种写法。
代码如下: