方法的递归与面向对象

简介:

方法的递归:

  方法的递归就是方法自调,自己直接或间接调用自己,类似于循环的一个效果。方法递归需要有一个明确的出口条件,不然就会死循环不断的消耗内存导致堆栈溢出。例如:

wKioL1nnf9iSwi1SAAS2F0ehVRI581.png

 main方法不断调用自己,因为没有跳出条件所以进入了死循环,很快就会内存溢出。


正确的方法递归示例:

wKioL1nnf9yRWr0pAAgLZJ9L9qI957.png

 这是一个使用递归算法解决斐波那契数列的示例。但是递归算法有一个硬伤就是方法的不断调用会消耗大量的内存和CPU资源,递归的层次太多就会出现这种问题。所以一般需要递归层次太多的事情,就需要考虑用其他的算法来实现。


 方法在调用时,上一个方法没有结束是不会执行下面的代码的,所以调用在结束前一直会占据着内存。例如:

wKiom1nngpnAdEk-AAzr8hrJ0pg428.png

从示例可看出方法调用过程的一个现象。





面向对象:

  面向对象是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,这样就在程序开发中引入了面向对象设计的概念,面向对象设计实际上就是对现实生活中的对象进行建模操作。

  现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,例如:人类,书桌,电脑,高楼大厦等。人类解决问题的方式总是将复杂的问题简单化,于是会思考这些对象都是哪些部分组成的。通常都会将对象划分为两个部分,即静态部分与动态部分。静态部分,顾名思义就是不能动、不会改变的部分,这个部分就被称为对象的属性,任何对象都会具备自身的属性,例如一个人,其属性包括身高,体型,性别,年龄等。人可以说话,行走,微笑,哭泣等,这些就是人所具备的动态部分,也就是对象的行为,人类通过探讨对象的属性和行为来了解对象。

  在计算机的世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界的实体抽象为对象,然后考虑这个对象具备的属性和行为。

  面向对象和面向过程的区别主要是代码上和编程思想上的区别。面向过程是以函数、结构体为准,面向对象则是万事万物皆对象,所有事情都当做对象来处理。面向对象更接近现实生活,更有扩展性和灵活性。



类:

  类是对象的模板,是对象的设计蓝图。类是构建对象时所依赖的规范。对象就是符合某个类定义所产生出来的示例,简而言之对象就是实例化的类。

  类是世间事物的抽象称呼,而对象则是这个事物相对应的实体,如果面临实际问题,通常需要实例化类对象来解决。定义完一个类之后,可以根据这个类构建抽象出一个实体对象,最后通过实体对象来解决相关的实际问题。

  java语言中,类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,而类包括对象的属性和方法,所以类称为对象的模板、设计蓝图。例如:

wKioL1nnf-yRYw2OAA8ls-Ce0nk836.png




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974030,如需转载请自行联系原作者

相关文章
|
关系型数据库 Java 数据库连接
DB2数据库连接问题:java.lang.NoClassDefFoundError
DB2数据库连接问题:java.lang.NoClassDefFoundError
295 0
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
421 4
Golang语言之管道channel快速入门篇
|
12月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
8月前
|
编解码 人工智能 算法
国家扶持超高清产业背景下:视频云AIGC的超高清技术实践
本次分享由阿里云视频云高级产品解决方案架构师陈震主讲,聚焦国家扶持超高清产业背景下,视频云AIGC的超高清技术实践。内容涵盖超高清产业发展趋势与挑战、阿里视频云的应对方案及应用案例。通过全链路超高清解决方案,结合AI、云计算等技术,提供从内容生产、传输到播放的完整支持,助力行业应对超高清视频带来的技术与市场挑战。
300 0
|
域名解析 缓存 网络协议
Dnsmasq的使用
Dnsmasq的使用
537 1
|
11月前
|
前端开发 数据可视化 开发者
D3.js 内置的动画函数
D3.js 内置的动画函数
209 0
|
域名解析 存储 缓存
Linux中搭建DNS 域名解析服务器(详细版)
Linux中搭建DNS 域名解析服务器(详细版)
2657 5
|
SQL 数据库 Windows
如何在 Windows 上安装SSMS,保姆级教程来了!
安装SQL Server Management Studio (SSMS) 的过程包括:从安装界面或微软官网下载SSMS安装包,点击运行,选择安装选项,等待安装完成,并通过SSMS连接到数据库以验证安装成功。图文教程详细展示了每个步骤,包括所需截图。
|
Java API 开发者
RESTful API设计与实现:Java开发者指南
RESTful API设计与实现:Java开发者指南
|
数据管理 关系型数据库 数据库
web2py,一个好用的开源Web应用框架!
web2py,一个好用的开源Web应用框架!
284 1