4.3用户自定义类
1. java的对象变量相当于C++中的对象指针
Date* d=new Date();
2. java中所有的方法中不要命名与实例域同名的变量
4.4静态域与静态方法
1.静态域属于类,而不属于独立的对象
2.静态方法不能操作对象,所以 不能在 静态方法中访问实例域。但是静态方法中可以访问自身类中的实例域。
4.5方法参数
1.java使用值调用
2.方法参数的使用情况:
1.一个方法不能修改一个基本数据类型的参数
2.一个方法可以改变一个对象参数的状态
3.一个方法不能让对象参数引用一个新的对象
4.9类设计技巧
1.一定要将数据设计为私有
2.一定要对数据初始化
3.不要在类中使用过多的基本数据类型,尽量用其他的类替代多个相关的基本数据类型的使用
4.不是所有的域都需要独立的域访问器和域更改器
5.采用标准格式进行类的定义
一定采用下面的顺序书写类的内容
- 公有访问特性部分
- 包作用域访问特性部分
- 私有访问特性部分
每一部分中应该按照下面部分列出
- 实例方法
- 静态方法
- 实例域
- 静态域
6.将职责过多的类进行分解
7.类名和方法名要能够体现他们的职责
第五章 继承
5.1 类 超类和子类
1.在java中,所有继承都是公有继承
5.1.3 动态绑定
调用过程:
1)编译器查看对象的声明类型和方法名。至此,编译器已经获得所有可能被调用的候选方法。
2)接下来,编译器将查看调用方法时提供的参数类型,至此,编译器已经获得需要调用的方法名字和参数类型。
3)如果方法是private,final,static或者构造器,这编译器采用静态绑定。
4)当程序运行,采用动态绑定
5.1.5 强制类型转换
1)只能在继承层次内进行类型转换
2)在将超类转化成子类之前,应该使用instanceof进行检查。
5.1.6 抽象类
扩展抽象类,可以有两种选择:
1)一种是在子类中定义部分抽象方法或者不定义抽象方法,这样就必须将子类定义为抽象的
2)另外一种是定义全部的抽象方法,这样一来,子类就不是抽象的了
可以定义一个抽象类的对象变量,但它只能引用非抽象子类的对象。
例如:Person p=new Student();
5.7 继承的设计技巧
1)将公共操作和域放置在超类中
2) 不要使用受保护的域,原因有二:
a>子类集合是无限制的,任何一个人都能够由一个类派生一个子类,从而访问受保护的域
b>同一个包中的所有类都可以访问受保护的域,不管是不是子类
3)使用继承实现“is-a”关系
4)除非所有继承的方法都有意义,否则不要使用继承
5)在覆盖方法的时候不要改变预期的行为
6)使用多态,而非类型信息
7)不要过多的使用反射
第六章 接口与内部类
6.1接口
接口不是类,而是一组对类的需求描述,这些类要遵从接口描述的统一格式进行定义。接口中的所有方法都自动地属于public。
1. 类实现接口,需要下面两个步骤:
1)将类声明为实现给定的借口
2)对接口中的所有方法实现定义