JavaSE 第五章 初步认识初始面向对象

1、面向对象和面向过程

面向过程也是解决问题的一种思想,当我们在解决问题时,会按照预先设定的想法和步骤,一步一步去 实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。上述描 述的每一个具体步骤我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接 的体现。通过上面简单的描述发现,面向过程,其实就是面向着具体的每一个步骤和过程,就是面对具 体的每一个功能函数。这些功能函数相互调用,完成需求。

面向对象当不再面对具体的每一个方法时,发现操作也变的简单了很多。而封装具体功能的这类,是我 们需要面对的。而基于这个封装了具体功能的类,那怎么使用呢?当面向封装了具体功能类,若要使用 这个类,一般情况下,在Java中需要通过创建这个类的实体来使用。这个实体称之为对象。在开发中, 我们是在不断的找封装不同功能的类。基于这些类,创建其对象,使用这些对象完成相应的操作。通过 上面的讲解和分析得出:面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的类, 创建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。在以后开发 中,先找对象,调用对象中的具体功能。如果真的没有能够完成需求的对象,这时就自己创建对象,并 将所需的功能定义到对象中,方便以后使用。

面向对象是一种更符合人们思考习惯的思想面向过程中更多的体现的是执行者,面向对象中更多的体现 是指挥者。指挥对象做事情面向对象将复杂的问题简单化在面向对象的世界中:万事皆对象。

面向对象和面向过程,其实都是一种思想。面向对象是相对面向过程而言的。面向过程,强调的是功能 行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装到对象中,强调具备了功能的对象,以 类/对象为最小的单位,考虑谁来做。

面向对象分析和设计的思路:

根据问题需要,选择问题所针对的现实世界中的实体。

从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成的概念世界中的类。

把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成 计算机能够识别和处理的数据结构。

把类实例化成计算机世界中的对象,对象是计算机世界中解决问题的最终工具。

2、 类和对象的关系

面向对象程序设计(OOP)就是使用对象进行程序设计。对象(Object)代表现实世界中可以明确标识 的一个实体。例如:一个学生、一张桌子、一个圆、一个按钮甚至是一笔贷款都可以看作是一个对象。 每个对象都有自己独特的标识、状态和行为。一个对象的状态(state,也称为特征(property)或者属 性(arrtibute))是由具有当前值的数据域来表示的。例如:圆对象具有一个数据域radius,它是标识 圆的属性。一个矩形对象具有数据域width和height,它们都是描述矩形的属性。我们一般把对象的特有 属性称之为成员变量。

一个对象的行为(behavior,也称为动作(action))是由方法定义的。调用对象的一个方法就是要求 对象完成一个动作。例如:可以为圆对象定义一个名为getArea()和getPerimeter()的方法。圆对象可以 调用getArea()返回圆的面积,调用getPerimeter()返回它的周长。我们一般把对象的行为称之为成员函 数。

使用一个通用类来定义同一类型的对象。类是一个模板、蓝本或者说是合约,用来定义对象的数据域是 什么以及方法是做什么的。一个对象是类的一个实例。可以从一个类中创建多个实例。创建实例的过程 称为实例化。对象和实例经常是可以互换的。

类是用于描述现实事物的,它将现实事物进行抽象化,模板化描述。将事物的特点(属性)和行为封装 在其中。比如小汽车的图纸,图纸就是小汽车的模版。图纸上画着小汽车的各种特点和功能要求。

Java类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法 (constructor)的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作 的,但是设计构造方法是为了完成初始化动作。

对象是现实生活中存在的具体的实例、个体。即生活看到每一个事物,以及我们想象中的任务抽象的概 念,都是某一类事物的实例和个体。而这些个体都属于某一类事物,即这些个体都是某一类事物中的具 体的实例。比如,小汽车就是一类事物,而小汽车又是基于小汽车图纸制造出来的真实个体。因此我们 生活中的每一个实物都可以理解为是某一类事物的中的一个个体。创建对象的,通过对象就可以调用具 体的属性和行为。

类和对象是面向对象的核心概念。类是对一类事物的描述,是抽象的概念上的定义。对象是实际存在的 该类事物的每个个体,因而也称为实例。类是抽象的概念,对象是具体的概念。

可以理解:类=抽象概念的人,对象=实实在在的某个人

面向对象程序设计的重点是类的设计

类的设计,其实就是类的成员设计。常见的类的成员有:属性【类中的成员变量】,方法【行为,类中 的成员方法】。

如果将对象比作汽车,那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是 对象的设计。

类是模子,规定对象将会拥有的属性和方法

3、类的语法格式:

java创建类的步骤:

定义类(考虑修饰符,类名)

编写类的属性(考虑修饰符,属性类型,属性名,初始化)

编写类的方法(考虑修饰符,返回值类型,方法名,形参等)。

4、成员变量

成员变量又访问修饰符【后面详解】

可以是任意类型

类中定义的变量称为成员变量,在方法中定义的变量是局部变量。成员变量和局部变量的区别。

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变 量类型都是引用类型

5、方法

方法是类或对象行为特征的抽象,用来完成某个功能操作,在某些语言中也称为函数或过程。

将功能封装为方法的目的是,实现代码重用,简化代码。

java中的方法不独立存在,所有的方法定义在类中。

案例:榨汁机案例【举例】

类的方法定义类的某种行为(或功能)

方法分类: 按照有无返回值分类 :1> 无返回值 void 2>有返回值 方法体最后加return。

方法调用:方法是个黑匣子,完成某个特定的应用程序功能,并返回结果。方法通过方法名被调用。只有 被调用才会执行。

调用方法就是执行方法中包含的语句。方法之间允许相互调用,不需要知道方法的具体实现,实现 宠重用,提高效率。

方法之间存在相互调用,方法内部不能重复定义方法,只能调用另一个方法。

方法重载:方法名相同,参数列表不同,与访问修饰符与返回值类型无关,形成方法的重载。

如果一个方法调用自身,我们称为方法的递归调用。递归容易出现堆栈溢出,必须找到出口,结束 该方法的执行。

方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。

递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。

6、对象的创建和使用:内存解析

堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一 点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。

通常所说的栈(Stack),是指虚拟机栈。虚拟机栈用于存储局部变量等。局部变量表存放了编译期可知 长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引 用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 方法执行完,自动释放。

方法区(Method Area),用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的 代码等数据。

对象内存分析【初步】

7、对象数组

数组的类型是自己定义的类的类型,也就是一组相关对象的集合。利用对象数组完成对学生信息的查 看,添加,修改,删除。

8、动态参数

JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹 配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。

  1. 声明格式:方法名(参数的类型名 ...参数名)

  2. 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个

  3. 可变个数形参的方法与同名的方法之间,彼此构成重载

  4. 可变参数方法的使用与方法参数部分使用数组是一致的

  5. 方法的参数部分有可变形参,需要放在形参声明的最后

  6. 在一个方法的形参位置,最多只能声明一个可变个数形参

9、值传递和引用传递

形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参

形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值