2.面向对象面向过程与面向对象 对象 对象是构成现实世界的一个独立单位,人们对世界的认识,是从分析对象的特征入手的。 对象的特征分为静态特征和动态特征两种。静态的特征指对象的外观、性质、属性等;动态的特征指对象具有的功能、行为等。 面向过程:注重的是执行的动作。必须对每个细节了如指掌。 面向对象:注重的是实体(对象)。隐藏了方法和整个过程的细节。 注:1.面向对象注重的是实体,我们在分析问题是,首先不要执行具体的操作,要找到这些实体(对象),我们要分析实体具有什么行为(功能)。分析具体的动作属于哪个实体时,只需要考虑当前这个动作,哪个实体更了解,这时候就将这个动作赋予哪个实体。 2.对于开发者:在面向对象中,开发者其实就是在不断的使用对象,创建对象调用对象的行为来完成具体的操作。 3.对于设计者:我们在涉及阶段,就是分析出各个对象,将行为赋予各个对象,来维护对象之间的关系。 4.在分析阶段,有一种比较简单的分析方法叫名词分析法 人开门---->人与门名词 开 动词 对象:人,门 动作:开 开是门的动作。 面向对象的优点 1.是一种符合人们思考习惯的思想 2.可以将复杂的事情简单化 3.将程序员从执行者转换成了指挥者 4.完成需求时: 先要去找具有所需的功能的对象来用。 如果该对象不存在,那么创建一个具有所需功能的对象。 这样简化开发并提高复用 面向对象的三个基本特征: 封装 它有两个含义:一是指把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位(即对象)中。另一层含义指“信息隐蔽”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓;或只允许使用对象的功能,而尽可能隐蔽对象的功能实现细节。 继承 若一个子类只允许继承一个父类,称为单继承;若允许继承多个父类,称为多继承。目前许多面向对象程序设计语言不支持多继承。而Java语言通过接口(interface)的方式来弥补由于Java不支持多继承而带来的子类不能享用多个父类成员的缺憾。 多态是允许程序中出现重名现象。Java语言中含有方法重载与成员覆盖两种形式的多态。 方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。 成员覆盖:子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同。 多态的特性使程序的抽象程度和简捷程度更高,有助于程序设计人员对程序的分组协同开发。 类与对象类(class)和对象(object)就是面向对象方法的核心概念。类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称实例(Instance) 类 在描述任何一类事物时从两个方面入手: 1.外观,属性 2.具有的行为,动作 将这两个方面进行综合归纳就可以得到一类特定的事物,称之为类。 在java中定义类使用的是class关键字 定义类的格式: class 类名{ 成员属性------可以是java中的任意一种数据类型 成员方法 } 注:我们在java中将类的属性,方法称之为类的成员。 !小提示: 声明类名时,类名中单词的首字母是大写的,这是规定的一种符合标准的写法,在本书以后的范例中都将采用这种写法。
对象 类的一个具体化(实例化)的事物。类是对象的一个抽象。根据这个类产生的对象就具有这个类定义时所有的属性。 定义对象的格式: 类名 对象名 = new 类名() ; 创建属于某类的对象,需要通过下面两个步骤来实现: 1、声明指向"由类所创建的对象"的变量 2、利用new创建新的对象,并指派给先前所创建的变量。 例如: Person p ; // 先声明一个Person类的对象p p = new Person() ; // 用new 关键字实例化Person的对象p 当然也可以用下面这种形式来声明变量: Person p = new Person() ; // 声明Person对象p并直接实例化此对象 注:同一个类的对象具有相同的属性,但其属性值可能不同。 !小提示: 对象只有在实例化之后才能被使用,而实例化对象的关键字就是new。 |