1:类
类是构造对象的模板或蓝图。由类构造对象的过程成为创建类的实例。
2:对象
对象的三个主要特性:
对象的行为-------可以对对象施加哪些操作,或可以对对象施加哪些方法?
对象的状态-------当施加那些方法时,对象如何响应?
对象标识---------如何辨别具有相同行为与状态的不同对象?
3:识别类
首先从设计类开始,然后再往每个类中添加方法。规则是在分析问题的过程中寻找名词,而方法对应着动词。
4:类之间的关系
依赖:是一种最明显的、最常见的关系 uses-a
聚合:是一种具体且易于理解的关系 has-a
继承:是一种用于表示特殊与一般关系的 is-a
5:构造器
1)与类同名
2)每个类可以有一个以上的构造器
3)构造器可以有0个、1个或多个参数
4)构造器没有返回值
5)构造器总是伴随着new操作仪器调用
注:不要再构造器中定义与实例域重名的局部变量。
6:封装的优点
需要获得或设置实例域的值需要:
一个私有的数据域
一个公有的域访问器方法;
一个公有的域更改器方法。
优点:改变内部实现,除了该类的方法之外,不会影响其他代码。
7:重载
如果多个方法有相同的名字、不同的参数、便产生了重载。编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选出相应的方法。如果编译器找不到匹配的参数,就会产生编译时错误,因为根本不存在匹配,或者没有一个比其他的更好。
8:无参数的构造器
很多类都包含一个无惨的构造器函数,对象由无参数构造器创建时,其状态会设置为适当的默认值。
如果在编写一个类时没有编写构造器,那么系统就会提供一个无参数构造器。这个构造器将所有的实例域设置为默认值。于是,数值型为0、布尔型为false、对象变量为null。
如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会视为不合法。
注:仅当类没有提供构造器的时候,系统才会提供一个默认的构造器。如果在编写类的时候,给出了一个构造器,哪怕是很简单的,要想让这个类的用户能够采用下列方式构造实例: new ClassName()。
9:初始化模块
方法: 在构造器中设置值、在声明中赋值。
调用构造器的具体处理步骤:
1)所有数据域被初始化为默认值(0、false、null)
2)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。
3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
类是构造对象的模板或蓝图。由类构造对象的过程成为创建类的实例。
2:对象
对象的三个主要特性:
对象的行为-------可以对对象施加哪些操作,或可以对对象施加哪些方法?
对象的状态-------当施加那些方法时,对象如何响应?
对象标识---------如何辨别具有相同行为与状态的不同对象?
3:识别类
首先从设计类开始,然后再往每个类中添加方法。规则是在分析问题的过程中寻找名词,而方法对应着动词。
4:类之间的关系
依赖:是一种最明显的、最常见的关系 uses-a
聚合:是一种具体且易于理解的关系 has-a
继承:是一种用于表示特殊与一般关系的 is-a
5:构造器
1)与类同名
2)每个类可以有一个以上的构造器
3)构造器可以有0个、1个或多个参数
4)构造器没有返回值
5)构造器总是伴随着new操作仪器调用
注:不要再构造器中定义与实例域重名的局部变量。
6:封装的优点
需要获得或设置实例域的值需要:
一个私有的数据域
一个公有的域访问器方法;
一个公有的域更改器方法。
优点:改变内部实现,除了该类的方法之外,不会影响其他代码。
7:重载
如果多个方法有相同的名字、不同的参数、便产生了重载。编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选出相应的方法。如果编译器找不到匹配的参数,就会产生编译时错误,因为根本不存在匹配,或者没有一个比其他的更好。
8:无参数的构造器
很多类都包含一个无惨的构造器函数,对象由无参数构造器创建时,其状态会设置为适当的默认值。
如果在编写一个类时没有编写构造器,那么系统就会提供一个无参数构造器。这个构造器将所有的实例域设置为默认值。于是,数值型为0、布尔型为false、对象变量为null。
如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会视为不合法。
注:仅当类没有提供构造器的时候,系统才会提供一个默认的构造器。如果在编写类的时候,给出了一个构造器,哪怕是很简单的,要想让这个类的用户能够采用下列方式构造实例: new ClassName()。
9:初始化模块
方法: 在构造器中设置值、在声明中赋值。
调用构造器的具体处理步骤:
1)所有数据域被初始化为默认值(0、false、null)
2)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。
3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
4)执行这个构造器的主体。
类的设计技巧
1:一定要保证数据私有。
这是最重要的;绝对不要破坏封装性。有时候,需要编写一个访问器方法或者更改器方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但它们的使用方式却不会经常发生变化。当数据保持私有时,它们的表示形式的变化不会对类的使用产生影响,即时出现bug也易于检测。
2:一定要对数据初始化。
Java不对局部变量进行初始化,但是会对对象的实例进行初始化。最好不要依赖于系统的默认值,而是应该显示地初始化所有的数据,具体的初始化方式是可以提供默认值,也可以是在所有构造器中设置默认值。
3:不要再类中使用过多的基本类型。
就是说,用其他的类代替多个相关的基本类型的使用。这样会使类更加易于理解且易于修改。
4:不是所有的域都需要独立的域访问器和域更改器。
5:将职责过多的类进行分解。
6:类名和方法名要能够体现他们的职责。