1、,Java的面向对象编程思想,2018/11/13,面向对象编程概述,简单来说,面向对象编程(Object Oriented Programming,简称OOP)描述的是对象之间的相互作用。面向对象编程主要我们从如下几点论述;1.面向过程和面向对象的区别2.类和对象:对象类3.面向对象编程的基本特征4.面向对象的优点,2018/11/13,面向对象编程与面向过程编程的区别,过程化程序设计先确定算法,再确定数据结构;面向对象编程先确定数据结构,在确定算法。面向过程编程的程序员,习惯于建立数据结构存放数据并定义方法(函数)来操作数据;面向对象编程的程序员则构造一个对象模型,将数据与方法组织在一起。
2、为了更好的理解面向对象编程思想,我们可以举个生活中的例子:如何把衣服放入衣柜?面向过程:为了把衣服装进衣柜,需要3个过程。1.把衣柜打开(得到打开的衣柜)2.把衣服放进去(打开门后,得到里面存放衣服的衣柜)3.把衣柜门关上(打开门、存好衣服、获得关好门的衣柜)每个过程有一个阶段性的目标,依次完成这些过程,就能把衣服存进衣柜。,2018/11/13,面向对象: 为了把衣服存入衣柜,需要做三个动作(或者叫行为)。 每个动作有一个执行者,它就是对象。 1) 衣柜,你给我把门打开 2) 衣柜,你给我把衣服装进去(或者说,衣服,你给我钻到衣柜里去) 3) 衣柜,你给我把门关上 依次做这些动作,就能把衣服
3、存入衣柜。 衣柜.开门() 衣柜.存入(衣服) 衣柜.关门(),2018/11/13,面向对象程序设计的类和对象,对象对象就是一组变量和相关方法的集合,一个对象有状态、行为等,其中变量表明对象的状态,方法表明对象所具有的行为 类类是一组具有相同数据结构和相同操作的对象集合类是组成Java的基本要素,它封装了一类对象的状态和方法,2018/11/13,对象、实体与类之间的关系,类是具有相似属性和行为 的一组具有实例(对象) 的抽象集合。组成类的对 象均为此类的实例,类与 实例的关系可以看成是抽 象与具体的关系,2018/11/13,如何定义一个类,public class MyDatepriva
4、te int day,month,year;public MyDate(int day,int monyh,int year)this.day = day;this.month = month;this.year = year;public int getDate() ,2018/11/13,对象的生成,对象的生成 通过new操作符生成一个对象 例如:MyDate md = new MyDate();,2018/11/13,面向对象的四大特点,抽象就是忽略一个主题中与当前目标无关的方面,以便更充分的注意与当前目标有关的方面,抽象,封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,实
5、现一个完全自治、封装的对象,封装,继承是一种联结类的层次模型,并且鼓励类的重用,它提供了明确表述共性的方法。对象的一个新类可以从现有的类中派生,继承,不同类的对象对同意消息作出响应,包括参数化多态性和包含多态性,多态,2018/11/13,抽象(abstraction),抽象就是将一类实体的共同特性抽象出来,封装在一个新的类中,所以说抽象是面向对象语言的基础。比如狗是一个对象,但是我们在研究这个对象的时候会把它的一些同类放在一块,一起来考虑,而且抽象的时候,只考虑我们感兴趣的一些数据;某些人可能关心的数据是,狗类的叫声,狗类的蹦跑的方法;某些人可能关心的数据是狗的颜色,狗的大小等等。我们通常用
6、抽象来处理复杂性。比如车子,我们不会把它想象成有多少个独立的部分组成,而是把它想成一个具有自己独特行为的对象。我们可以忽略引擎、传动及刹车系统的工作细节,将车子作为一个整体来加以利用,2018/11/13,继承(Inheritance),让一个类B去继承另一个类A,那么被继承的类A里的一些公开的可以被B看到的东西都可以被B继承过来,就不必重新开发。其实继承体现的是is-a关系。继承是一个对象获得另一个对象的属性的过程。例如 “人”是一个基类,则“男人”是“人的一个子类。如果小李”是一个“男人”,也就是说“小李”是“男人”的一个对象,那么显然“小李”也是“人”这个基类的一个对象。子类具有父类的一
7、般特性(包括属性和行为),以及自身的特殊的特性。 在Java中使用extends关键字表示继承声明一个男人类继承人类public class Man extends Human,2018/11/13,封装(Encapsulation),对象是对一组变量和相关方法封装。通过对象的封装,实现了模块化和信息隐藏用访问控制符来控制对类成员的访问权限,实现类成员的隐藏。,2018/11/13,多态性(Polymorphism),Java语言的多态是指程序中同名的不同方法共存的情况,多态可为程序提供更好的可扩展性,同样也可以代码重用。实现多态性的三种方式: 1.通过子类对父类方法的覆盖实现多态; 2.利用
8、重载在同一个类中定义多个同名的不同方法来实现多态。 3.接口指向实现类,2018/11/13,重载,在同一个类中,方法名相同,参数列表不同,所引起的俩个方法的差异叫重载 class testint add(int i,int j)float add(float f,float t)String add(String s,String sb) ,2018/11/13,重写,在存在父子继承关系的前提下,子类把从父类继承过来的方法,完全重写编写的过程叫做重写。方法名相同参数列表相同返回类型相同,2018/11/13,接口,通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。 通过接
9、口可以指明多个类需要实现的方法 通过接口可以了解对象的交互界面,而不需要了解对象所对应的类 接口的定义: 1.常量必须初始化,可以不写final 2.接口为public时,文件名必须和接口一致interface Collection,2018/11/13,接口实现多态,public interface Apublic int s1(.); public class b implements a. public class c implements a.A a = new b(); A a = new c(); a.s1(); a.s1();,18,面向对象思想优点,1.可重用性编写可重用模块,比如类 2.可扩展性要求应用软件能够很方便、很容易的进行扩充和修 改 3.可管理性采用封装了数据和操作的类作为构建系统的部件,使项目组织更加方便合理,2018/11/13,总结,面向对象程序设计的主要特点是以对象作为基本的逻辑构件,用类来描述具有相同特征的对象,整体的代表这类对象,以继承性作为共享机制,共享类中的方法和属性,对象之间则以消息传递的方式进行。与传统的程序设计开发人员不再是仅仅根据某种程序设计语言的语句和表达式来编制程序,而是要求软件开发者通过装配其他编制着提供的可重用的软件体的来生产软件,面向对象的程序设计最为显著的特点还是封装性、继承性、多态性。,