专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 移动开发

java核心技术小结三

发布时间:2010-05-30 03:31:14 文章来源:www.iduyao.cn 采编人员:星星草
java核心技术总结三

第四章:对象和类

1、在类之间,最常见的关系有:

依赖:即"use-a"关系,例如Order类使用Account类是因为Order对象需要访问Account对象查看信用状态。应该将相互依赖的类减少到最少。它用箭头表示,箭头指向被依赖的那个类,使用虚线。

聚合:即"has-a"关系,也可以说是"关联",聚合关系意味着类A的对象包含类B的对象。它用菱形表示,菱形放在A上

继承:即"is-a"关系,表示特殊和一般的关系。它用三角形表示,如果是实现接口的话,使用的是虚线,三角形放在被继承的类上。

2、并不是所有的类都具有面向对象的特征。例如Math类。

3、对象不会自动被初始化为null,而必须通过调用new或将它们设置为null进行初始化。

      java对象变量与c++的引用类似,这种说法是错误的。在c++中没有空引用,并且引用不能被赋值。可以将java对象看成是c++的对象指针。

4、java将时间与日历类分开是一种很好的面向对象设计。Date类中用来比较2个时间点的方法有before和after,它的getDay,getMonth,getYear方法不推荐。GregorianCalendar日历类有很多方法都可用。比如说构造器就有好几种。

Locale.setDefault(Locale.ITALY)这句话放在main函数的第一行可以看到不同地区的程序输出

  在c++中带有const后缀的方法是访问器方法,默认为更改器方法。

5、主力类:类中没有main方法,有自定义的实例域和实例方法

6、java中必须注意所有的方法中不要命名与实例域相同名的变量。

   在java中必须使用new关键字来创建一个对象,下面的这句话可以在c++中通过。

   Employee number("aaa","001");

7、 a.method(b);在java中a被称为隐式参数,b被称为显式参数。

8、目前我写程序还是会出现的一个问题是: java中规定最好不要返回引用可变对象的访问器方法。因为这样会破坏封装性。

如 public Date gmethod(){return date;} 这个毛病我到目前为止还是会犯。如果要想返回引用可变对象,需要进行克隆。如return (Date)date.clone();

9、final修饰符经常用于基本类型和不可变类。比如String类就是一个final类,即String类中的方法不会改变这个String对象。

10、static域被称为类域,它属于类,而不属于任何独立的对象。如System.out常量就是一个静态的,out的类型是PrintStream。值得注意的是System类的setOut方法可以将System.out设置为不同的流。原来是这个方法是一个本地方法,而不是java语言实现的。本地方法可以绕过java语言的存取控制机制。

可以使用对象来调用静态方法。但是最好还是使用类去调用

   使用静态方法的情形有:

   1、一个方法不需要访问对象状态,其所有参数都通过显示参数提供。如Math.pow

   2、一个方法只需要访问静态域。

  NumberFormat类使用factory方法产生不同风格的格式对象。

在C++中使用::操作符访问自身作用域之外的静态域和静态方法。

    static方法的意义: 最开始是在c中被用的,表示退出一个块后依然存在的局部变量。接着在c中的第二种定义是不能被其他文件访问的全局变量和函数。接着在c++中得到重用表示属于类但是不属于类对象的变量和函数。

11、java程序设计中,方法参数的使用情况:

(1)、一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)

(2)、一个方法可以改变一个对象参数的状态

(3)、一个方法不能实现让对象参数引用一个新的对象。

c++中有值调用和引用调用2种,引用参数标有&符号。

12、方法签名包括:方法名,参数类型,但是不包括返回类型。java允许重载任何方法,而不只是构造器方法。

13、java语言中能够让一个构造器调用另外一个构造器,但是c++中是不允许的。

14、java调用构造器的过程:

(1)、所有的数据域被初始化为默认值

(2)、按照在类声明中出现的顺序,依次执行所有域初始化语句和初始化块

(3)、如果构造器第一行调用了第二个构造器,则执行第二个构造器主体

(4)、执行当前这个构造器的主体

15、java有自动的垃圾回收机制,不需要人工回收内存,所以java不支持析构器。

16、java中可以将类导入进来,然后进行使用,有的时候可以直接在类中写上类名.方法名。但是C++不支持这种方式,它必须使用#include将外部特性的声明加载进来,因为C++编译器无法查看任何文件的内部。在C++中与包机制类似的是命名空间。

17、Window类中有很多域没有加上private关键字修饰。

18、java类的设计技巧:

(1)、一定要将数据设计为私有

(2)、一定要对数据进行初始化

(3)、不要在类中使用过多地基本数据类型:用类代替多个相关的基本数据类型的使用。

(4)、不是所有的域都需要独立的域访问器和域更改器

(5)、使用标准格式进行类的定义

(6)、将职责过多的类进行分解

(7)、类名和方法名要能够体现他们的职责



友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: