想要使用OOP一定要清楚对象的三个主要的特性
1.对象的行为---------可以对对象施加哪些操作,或可以对对象施加那些方法.?
2.对象的状态---------当施加方法时,对象如何响应!!!
3.对象的标识---------如何区分具有相同行为和状态的不同对象!!!
同一个类的所有对象实例由于支持相同行为而具有相同的行为.. 而具有家族的相似性.. 对象的行为是用可调用的方法定义的..
此外.每个对象都保存着描述当前特征的信息.这就是对象的状态.对象的状态可以能会随着时间而发生改变.但是这种改变不会自发的.. 对象的状态必须通过调用方法实现..否则就会破坏他的封装性..
但是对象的状态并不能完全描述一个对象.每个对象都有一个唯一的身份...
需要注意的是.作为一个类的实例.每个对象的表示永远是不同的.但状态却常常存在着差异..
类之间的关系.
1.依赖. uses-a
2.聚合 has-a
3.继承 is-a
(uses-a)依赖是一种最明显的.最常见的关系... 如果一个类的方法操纵了一个类的对象.那么我们就说一个类依赖于另外一个类.
(has-a)例如.. 一个A对象包含了一些B对象.
(is-a)也就是说. 如果A类扩展了B了.A类不但包含了从B类继承过来的方法..还会有一些额外的功能.
重载.
如果多个方法有相同的名字.不同的参数.便产生了重载.......
如果一个类A提供了一个显示的构造方法..而且是带参数的那么.你new一个空参数的构造那么这时候就会报erro..
所以如果你想要new 一个空的构造器.那么.你必须声明一个空的构造器...
在构造器里面可以用this()调用该类里面的其他构造器..
例如
- //伪代码
- private String a="";
- public A(){
- this("a");
- }
- public A(String a)
- {
- this.a =a;
- }
还有2个非常重要的2点就是
1. 静态初始化快.
例如..
- //伪代码.
- static
- {
- Random ro=new Random();
- nextId=ro.nextInt(100);
- }
2.对象初始化快..
例如.
- //伪代码
- {
- id=nextId;
- nextId++;
- }
3.实例初始化
- //伪代码
- private String name;//以前我们是这样声明一个变量.. 但没有初始化..
- private String name="";//这就是初始化的一个变量
包的命名 一般包的命名都是以自己的玉米来命名.. 而且是逆序的...
例如
- package com.wallian-hua.javaeye.codejava
这个都是个人的编程习惯...
类设计技巧..
1.一定将数据设计为私有的..
最重要的;绝对不要破坏封装性.
2.一定要对数据初始化.
JAVA不对局部变量初始化.但是会对对象的实例域进行初始化...
3.不要在类中使用过多的基本数据类型.
就是说.用其他可以代替多个相关的数据类型的使用,这样会使.类更加容易修改.
例如..用一个称为Address的类替换下面的Customer类中的实例域..
- //伪代码
- private String street;
- private String city;
- private state;
- private int zip;
4.不是所有的域都需要独立的域访问器.或者是更改器.
5.使用标准格式进行类的书写跟定义.
采用下面的顺序书写类的内容.
5.1.共有访问特性部分.
5.2.包作用域访问特性部分.
5.3.私有访问特性部分.
在每一个部分中.应该按照下列顺序列出..
5.4静态域.
5.5.实例域
5.6.实例方法.
5.7.静态方法.
6.将责任过多的类进行分解... (但是不要盲目的分解..根据个人需要.. )
好了. 今天整理到这里.. today is good day....! ^_^