抽象类 继承层越高类就更通用并且更抽象有些层中的祖先类非常通用更适于作为其他类的框架而不适于作为具体类来使用其特定实例 比如假设电子消息系统包括电子邮件传真和语音邮件它必须能处理文本消息传真消息和语音消息按照oop原则该程序应由文本消息类(textMessage)语音消息类(voiceMessage)和传真消息类(faxMessage)而信箱需要存储和混合这些消息因此还应由总体把握的消息类Message 为什么进行如此高层的抽象呢?答案是这会使类设计更清晰 在面向对象的概念中我们知道所有的对象都是通过类来描绘的但是反过来却不是这样并不是所有的类都是用来描绘对象的如果一个类中没有包含足够的信息来描绘一个具体的对象这样的类就是抽象类抽象类往往用来表征我们在对问题领域进行分析设计中得出的抽象概念是对一系列看上去不同但是本质上相同的具体概念的抽象 比如如果我们进行一个图形编辑软件的开发就会发现问题领域存在着圆三角形这样一些具体概念它们是不同的但是它们又都属于形状这样一个概念形状这个概念在问题领域是不存在的它就是一个抽象概念正是因为抽象的概念在问题领域没有对应的具体概念所以用以表征抽象概念的抽象类是不能够实例化的 object类 object类是所有类的根类在不明确给出超类的情况下java会自动把object作为要定义类的超类 可以使用类型为object的变量指向任意类型的对象 Objectobj=newEmployee(huyag); 当然Object类型的变量只能用作各种值得通用持有者要对他们进行任何专门的操作都需要知道他们的原始类型并进行类型转换 Employeee=(Employee)obj; object的常用方法 booleanequals()StringtoString()ClassgetClass()Objectclone() 比较对象是否相等如果两个对象指向同一内存区域则返回真否则返回false 返回表示当前对象值的字符串 返回类定义的类对象该对象含有关于当前对象的信息 创建对象的副本java为新实例分配内存并且将当前类所占内存中的内容拷贝到新实例的内存中 对象包装类 有时需要将基本类型如int转换成对象所有的基本类型都有相应的类例如整数类Integer与基本类型int相对应这些类型常称为对象包装类包装类有明显的名字整数类(Integer)长整形类(Long)浮点类型(Float)双精度类(Double)字符类(Character)和布尔类(Boolean)前四个类都是由共同的父类数字类Number派生而来的 包装类是最终类 |