浏览 1385 次
锁定老帖子 主题:java基本编程要点之对象和类
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-03
A:要使用oop,需要了解对象的三个主要特性,分别是:
1:对象的行为(behavior)--对象能做什么.或者说,能对对象施加什么方法? 2:对象的状态(State) -- 对对象施加方法时,对象如何反应?即对象数据成员的值维护。 3:对象的身份(identity) -- 对象如何与具有相同行为、状态的其他对象相互区别? 首先,类的所有对象实例都支持相同的行为,从而具备家族相似性。对象的行为可以通过调用的方法来定义。 其次,类的所有对象都保存着表明其当前特征的信息。这就是对象的状态。 然而,对象的状态并不能完全描述一个对象,每个对象还应有一个惟一 的身份。 B:封装,继承,多态。 1:封装 --通过对对象数据的封装,就可以使可复用性最大化,减少数据依赖,并且使用调试时间最大化。 封装是一个与对象有关的概念,从形式上讲,封装就是把数据和行为结合在一个包中,并对对象的使用者 隐藏数据的实现过程。应该紧记一点是,实现封装的关键在于绝不让方法直接访问其类的实例字段(成员数据). 即所有类之间的通信都应该通过方法调用完成。 2:继承 -- 类可以建造在其类之上。我们把在一个类上建造新类称为对原有类的"扩展"(extend). 3:多态 -- 可通过实现接口与类继承实现方法的多态。为何说方法的多态?在JAVA中,实例字段是不参与类 多态原则的。 C:类之间的关系 类与类之间的关系最常见的关系有: 1:依赖(“use-a”)-- 如果一个类的方法操作了别一个类中的对象,哪么这个类就依赖于另一个类。 2:聚合(“has-a”) --一个对象包含了另一些对象。即一个类的以另一些类作为数据成员(全局变量)。 3:继承("is-a") --如果类A扩展了类B,哪么类A不仅继承类B中的方法,而且还可以具有更多的功能。 is-a 的解释为类A是类B的一个扩展类,即子类. D:Overload(重载) & Overrride(覆盖) 1:overload -- 当多个方法具有相同的名字而含有不同的的参数时,返回类型可相同可不相同, 便产生了生重载。JAVA中允许对任何方法进行重载。 2:override -- 方法的覆盖产生在继承,当子类对父类的方法进行重写时,便产生了覆盖。方法名相同,参数 个数与参类类型相同,返回类型相同。 E:数据字段的三种初始化方式 1:在构造器中设置值。 2:在声明中赋值。则在声明变量类型的同时赋初值。 3:在初始化块中设置值。这种机制并不是必须的,而且也不常见。把初始化代码放在某个构造器内显得更为 直接了当。不管用哪个构造器构造对象,初始化块都首先被运行,然后才是构造器的主体部分被执行。 F:类Object中有5个与线程有关的方法: 这个要点本来是要等到写到线程的时候再写出来的,但居然在这一章中说对象就顺便提出来给大家讨论一下。 也曾经有同事跟我说他去面试外企的时候考了这个题目,所以我就在这里写一下。 在这个超类中,有5个与线程有关的方法,大家可能猜到了,但还是注明一下,如下: wait() wait(long timeout) wait(long timeout,int nanos) notify() notifyAll() 这5个方法的意思我就不在这表达了,大家写过线都知道的,或者大家可以查一下JDK的API。 G:静态块的加载时机。 这个要点,因为要写程序跟运行信息要帖出来给大家看,才能让大家看明白,先将两个要点说明一下,明天再 一一述说。 一:静态初始化区域是在类别第一次载入的时候才会被调用哪仅仅一次。 二:严格来讲,静态初始化区域是在类别第一次实例化的时候才会被调用哪仅仅一次。 为什么 ?等我将程序打好,将运行信息贴上来再与大家一起讨论。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |