现在的位置: 首页 > 综合 > 正文

Java核心编程二:使用类和包

2013年12月11日 ⁄ 综合 ⁄ 共 1581字 ⁄ 字号 评论关闭

1 创建对象

对象声明后,只处理未初始化状态,可以用NULL或对象来初始化。
Java实现中将日期类Date和日历类Calendar分离开了。
2 自定义类
class Test
{    
    field1;

    methods; 
}
java的构造函数和类名同名,可以进行重载多个。Java的方法均定义在类的内部,但并不代表为内联。
对于有多个文件的情况下,javac工具会根据类的依赖情况,自动寻找相应的类文件,并进行编译。这也是Java需要类名和文件名相同的原因。
在类的成员函数中,可以直接访问类的成员属性,但采用this来寻找成员可以更加清晰表明属性的类型。
类的属性可以声明为final类型的,这样其在初始化过后,便不能再后续进行修改。
3 静态成员
和C++一样,非静态方法可以访问静态成员,但静态方法只能访问静态成员,因为静态方法不能访问对象上的成员。
一般会将常量成员同时声明为静态的,供共享访问。否则不会共享。
java中的每个类都可以有一个main()方法,这样方便单独测试每个类,可以将测试功能写到main中,只需要编译要测试的类即可。
4 形参和实参
对于基本类型的形式参数,其为传值操作。
而对于类类型参数,形式参数为引用的复本,即形参和实参均指向对象的引用,可以通过形参调用方法来修改对象的状态,但无法通过形参让实参引用到新的对象上。
5 对象构造
和C++一样,若用户未指定默认构造函数,则系统会自动生成一个,并进行默认初始化。但一旦用户定义了一个构造函数且不带参数,那么便不会合成默认构造函数。
除了构造初始化,Java支持成员在声明时直接初始化,类似C#,而C++只能通过初始化列表来进行。
如果在一个构造函数中,调用另一构造函数,则使用this()的形式。
java由于采用垃圾回收的方式,不需要编写析构函数,但如果真的有必须及时关闭一些资源。需要开发者自己实现类似dispose()的功能,并在类不再使用时主动调用此方法。
6 包
6.1 包的作用
包是一种组织命名的机制,可以进行嵌套。但不同包中的命名是独立的,互不影响。
6.2 导入包
使用包中的名称时,一种方式是写出完整的包路径;一种是通过import将包中的命名导入进来。例如import java.util.*可将util下所有命名都导入。也可以只导入特定类。避免命称污染。
对于类的静态变量或方法,可以通过import static指令来导入,从而实现直接使用这些名称的目的。这样使用算术函数或笨重的常量时会比较方便。
*只能用来导入一个叶子包,不能通过它一次导入多个包。
java的import是一种命名空间的导入机制,与C++的include不同。
6.3 创建包
通过在类文件前放置package name,便可以创建一个包,并将当前文件中创建public名称放入到package中。如果没有命名,则会放到一个默认包中。如果是一批文件,需要将文件放入到和包路径一致的目录中。C++通过指定包含头文件的方式来指定相应的路径。
6.4 jar包
可以使用jar工具,将一批类发布为jar包,jar包实际上是ZIP格式的。如果其他程序依赖于jar包,则可以在编译时通过-classpath来指定多个依赖的库路径。也可以通过环境变量CLASSPATH来活动各次重复的指定。
6.5 包作用域
默认一个包中的对象,可以访问本包中的其他公有对象。而且在无关键字时,为本包内可见,这是一种不受欢迎的使用方式。对于未封闭的包,其他人可以声明自己的包使得可以修改原有包中的公有属性。因此需要对类严格控制好其成员的可见性。
7 javadoc
通过增加/**  */的注释,可以由工具由代码中生成相应的文档。类似于docxyn,可以通过标记,如@author,@param等来进行注释说明明细。
常用的标记有@return @throw @param @version @deprecated 

抱歉!评论已关闭.