面向对象的理解
面向对象
Java语言是纯粹的面向对象的程序设计,主要表现为三大特征:封装、继承和多态。Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成。
虽然Java是面向对象的,但Java的方法里则是一种结构化的程序流(顺序结构、选择结构、循环结构)。
一切都是面向对象
在Java语言中,除8个基本数据类型值之外,一切都是对象,而对象就是面向对象程序设计的中心,对象是人们要研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或者事件。
对象具有状态,一个对象用数据值来描述它的状态。Java通过为对象定义成员变量来描述对象的状态;对象还有操作,这些操作可以改变对象的状态,对象的操作也被称为对象的行为,Java通过为对象定义方法来描述对象的行为。
类和对象
具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的定义,对象是实际存在的该类事物的个体,因而也称为实例;
对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。类用来描述一系列对象,类概述每个对象应包括的数据,类概述每个对象的行为特征。因此可以把类理解成某种概念、定义,它规定了某类对象所共同具有的数据和行为特征。
java语言使用class关键字定义类,定义类时可使用成员变量来描述该类对象的数据,可使用方法来描述该类对象的行为特征。
在客观世界中有若干类,这些类之间有一定的结构关系:
1.一般 -->特殊关系:这种关系就是典型的继承关系,Java语言使用extends关键字来表示这种继承关系(“is a”,比如苹果is a水果)。
2.整体 -->部分结构关系:也被称为组装结构,这是典型的组合关系,Java语言通过在一个类里保存另一个对象的引用来实现这种组合关系。
在定义Java类后,使用new关键字来创建指定类的对象,每个类可以创建任意多个对象,多个对象的成员变量值可以不同。
面向对象和面向过程的区别
二者都是一种思想,面向对象是相对于面向过程而言的。
1.面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做;
2.面向对象:将功能封装进对象,强调具备了功能的对象,以类为最小单位,考虑谁来做。
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
“人把大象装进冰箱”
面向过程:强调的是功能的行为,以函数为最小单位,考虑怎么做
(1)把冰箱门打开
(2)抬起大象,装进冰箱
(3)把冰箱门关闭
面向对象:强调具备了功能的对象,以类为最小单位,考虑谁来做
/*
* 人{
* 打开(冰箱){
* 冰箱.开();
* }
*
* 抬起(大象){
* 大象.塞进(冰箱);
* }
*
* 关闭(冰箱){
* 冰箱.关();
* }
* }
*
* 冰箱{
* 开(){}
* 关(){}
* }
*
* 大象{
* 塞进(冰箱){}
* }
*
*/
面向对象好比拿到手的是主板、CPU、硬盘、内存条等大粒度组件进行组装;而面向过程拿到手的则是电子元件。
面向对象比面向过程的编程粒度要大。面向对象的程序单位是类,而面向过程的程序单位是函数(相当于方法),因此面向对象比面向过程更简单、易用。