第四章 对象与类
oop三个特征:对象的行为、状态、标识
类之间关系:依赖,聚合,继承
依赖:一个类的方法操纵另一个类的对象。(尽量减少这种耦合情况)
聚合(has-a)一个类作为另一个类的变量而存在
继承(is-a)
如果只声明一个类变量,而没有在堆空间中开辟没存,
那么这个变量就不能调用类中的方法
因为这个变量没有引用对象
!!一个对象的变量并没有实际包含一个对象,而仅仅引用了一个对象
Data data;
等同于:
Data *data; //它只代表一个指针,而不拥有对象数据
get/set 访问器
一个源文件中只有一个公有类
javac <==> make 对包含main方法的类编译,运行时会自动编译其他相关类
也可以使用通配符*
c++在类内部定义的方法为内联方法
java中,虚拟机会自动的监视调用经常被调用、可优化的方法
不要编写返回引用可变对象的访问器方法,如果要使用,应当返回一个clone副本
class Employee
{
。。。
private Data getHireDay();
{
return hireDay.clone(); //防止给其他Data变量赋值时的混肴状态
}
}
final和static
/////////////////////////////
static:
c:保留局部变量数据。数据具有本地隐藏性
c++:该变量属于整个类而不是属于具体对象
/////////////////////////////
main() ;测试技巧:每个类都可以有一个main方法,并且可以单独运行一个类。运行程序则可以 java Application ,其他非启动类类中的main方法都不会运行
java都是值传递
一个方法不能修改一个基本数据类型的参数(数值、布尔)
一个方法可以改变一个对象参数的状态
一个方法不能让对象参数引用一个新的对象
方法名与参数列表共同组成方法签名
java初始化对象: 再回来看看!!
重载构造器
this调用其它构造器
无参数构造器
对象初始化块
静态初始化块
实例域初始化
对象析构:finalize 不推荐 不知道什么时候调用
包与引入包 import 类似于引用命名空间
package == namespace
import == using
静态导入
类设计技巧
1)保证数据私有
2)对数据初始化
3)不要在类中过多的使用基本类型(可以使用聚合关系代替)
4)不是所有的域都需要独立的访问器与更改器
5)将职责过多的类进行分解
6)类名与方法名应该能体现他们的职责