面向对象设计–类与对象
概念
类(class)与对象(object)是JAVA重要概念,类是对现实生活的抽象,一是与具体对应的抽象,二是与详细对应的抽象。类是对实际生活模型的建构,而对象是对这个模型的具体化。
内容
类里有两个东西,一是成员变量,二是成员方法。
变量是以数值(value)来反映属性的载体,方法则是对其属性修改,也就是对属性所对应的变量的修改等等操作 (算法)。
特性
1.封装性(encapsulation)
为了确保信息的安全与保密,JAVA有一种信息隐秘技术
通过运用一下关键字的前缀修饰,可以规定该类或成员变量在各个区域的可见性。
关键字 | 类内 | 包内 | 子类 | 外部包 |
---|---|---|---|---|
public | ✓ | ✓ | ✓ | ✓ |
protected | ✓ | ✓ | ✓ | ✗ |
default | ✓ | ✓ | ✗ | ✗ |
private | ✓ | ✗ | ✗ | ✗ |
封装使得数据和加工方法(函数)成为一个整体,用户只能见到对象的外特性(对象能接受哪些信息,具有哪些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。
2.继承性
为了简化代码,增强条理,JAVA有一种子类共享父类数据和方法的机制。父类派生子类,子类继承父类。
继承分为单继承(一个子类有一父类)和多重继承(一个子类有多个父类)。JAVA为单继承
Tips:
-
多重继承和连续继承并不冲突,多层继承反映了其传递性。
-
多重继承是二父一子,多层继承是一祖一父一子。
JAVA用extends关键字来修饰继承关系。
public class animal{}
public class bird extends animal{}
上述代码中animal为父类,bird为animal派生的子类,用extends关键字表示bird继承自animal。
子类会获得父类的所有东西,因此类的继承不仅支持系统的可复用性,而且还促进其可扩充性。
3.多态性
对象根据所接受的信息(传入参数)不同而做出不同动作(数据运算或方法调用等)的特性,称为多态性。
例如:同样是run方法,飞鸟调用是飞,野兽调用是奔跑。
多态性受到继承性的支持,把具有通用功能的协议(如方法)存放在类层次中尽可能高的地方,从而将实现这一功能的不同方法置于较低层次,在低层次上生成的对象就能给通用信息以不同的响应。