方法的递归与面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法的递归与面向对象相关的知识,希望对你有一定的参考价值。

方法的递归:

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

技术分享

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


正确的方法递归示例:

技术分享

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


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

技术分享

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





面向对象:

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

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

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

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



类:

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

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

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

技术分享


本文出自 “12831981” 博客,请务必保留此出处http://12841981.blog.51cto.com/12831981/1974030

以上是关于方法的递归与面向对象的主要内容,如果未能解决你的问题,请参考以下文章

js 面向对象的基本概念和基本使用方法

构造N位格雷码(递归,面向对象)

1.1 js 面向对象的基本概念和基本使用方法

Python:函数与面向对象编程总结

面向对象笔记一

java 面向对象:类结构 方法递归方法