个人笔记-java 核心技术基础知识 (一)--- 对象和类

参考书籍:《java 核心技术卷1》

1、类之间的关系

依赖-(“uses-a”)

聚合-(“has-a”)

继承-(“is-a”)

依赖(“uses-a”),是一种最明显、最常见的关系。例如Order类使用Accout 类是因为Order对象需要访问Account对象查看信用状态。但是Item 类不依赖于Account类,这是因为Item对象于客户账户无关,因此,如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。

应该尽可能地将相互依赖的类减至最少。如果类A不知道类B的存在,它就不会关心B的任何改变(这意味着B的改变不会导致A 产生任何Bug。用软件工程的术语来说,就是让类之间的耦合度最小。

聚合(“has-a”),是一种具体且易于理解的关系。 例如,一个Order对象包含一些Item对象。聚合意味着类A的对象包含类B的对象。

继承(“is-a”),是一种用于表示特殊于一般关系的。例如,RushOrder类由Order继承而来。在具有特殊性的RushOrder类中包含了一些用于优先处理的特殊方法,以及一个计算运费的不同方法;而其他的方法,如添加商品、生产账单等都是从Order类继承而来的。一般而言,如果类A扩展类B,类A 不但包含从类B继承的方法,还会拥有一些额外的功能。

2、对象与对象变量

要想使用对象,就必须首先构造对象,并指定其初始状态。然后,对对象应用方法。

一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

3、对象构造

有些类有多个构造器,例如,可以如下构造一个空的StringBuilder对象:

StringBuilder messages = new StringBuilder();

或者,可以指定一个初始字符串:

StringBuilder todoList =  new StringBulder("to do :");

这种特种叫做重载(overloading)。如果多个方法有相同的名字、不同的参数,便产生了重载。

如果在构造器中没有显示地给域赋予初值,那么就会被自动地赋为默认值:数值为0,、布尔值为false,对象引用为null。只有缺乏程序设计经验的程序员才会这么做。如果不明确地对域进行初始化,就会影响程序代码的可读性。

如果在编写一个类时没有编写构造器,那么系统就会提供一个无参构造器。这个构造器将所有的实例域设置为默认值。

初始化数据域的方法:

 1、在构造器种设置值

 2、在声明中赋值

 3、初始化块

首先运行初始化块,然后才运行构造器的主体部分。

在类第一次加载的时候,将会进行静态域的初始化。

可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象之前调用。在实际应用中,不要依赖于使用finalize方法回收任何短缺的资源,这是因为很难指定这个方法什么时候才能够调用。

4、类设计技巧

     1、一定要保证数据私有

      这是最重要的,绝对不要破坏封装性。当数据私有时,它们的表现形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。

    2、一定要对数据初始化

        java不会对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显示地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有的构造器中设置默认值。

    3、不要在类中使用过多的基本类型

        就是说哦,用其他的类代替多个相关的基本类型的使用。这样会使类更加易于理解且易于修改。

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

   5、将职责过多的类进行分解

   6、类名和方法名要能够体现它们的职责

   7、优先使用不可变的类

    

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值