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

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 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值