面向对象理解

一.何为面向对象编程,这种编程理念和面向过程编程比较有什么优势?

面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为

二.面向对象编程的主要特点:

1.封装:

  封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某

一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。

2.继承:

继承来源于现实世界,一个最简单的例子就是孩子会具有父母的一些特征,即每个孩子都会继承父亲或者母亲的某些特征,当然这只是最基本的继承关系,现实世界中还存在着更复杂的继承,面向对象之

以使用继承机制主要是用于实现代码的复用多个类所公用的代码部分可以只在一个类中提供,而其他类只需要继承即可。

3.多态:

  多态与继承关系紧密,是面向对象编程中另一个突出的特征,所谓的多态是指在继承体系中,所有派生类都从基类继承接口,但由于每个派生类都是独立的实体,因此在接收同一消息的时候,可能会生成不

同的响应。多态的作用作为隐藏代码实现细节,使得代码能够模块化;扩展代码模块,实现接口重用。简单来说:一种行为产生多种效果。

总的来说:封装可以隐藏实现细节同时包含私有成员,使得代码模块化并增加安全指数;基础可以扩展已存在的模块,目的是为了代码重用;多态则是为了保证:类在继承和派生的时候,保证家谱中任何类的实例被正确调用,实现了接口重用。

三.python中面向对象的基本语法

 

其中关于self和__init__这两个特殊关键字的理解

I.self 是表示的实例自己

Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数(self),但在调用这个方法的时候不必为这个参数赋值,这个特别的参数指代的是要实例化的对象本身(即实例的变量)而按照管理,它用self来表示(也可以换成其它关键字,但最好约定俗成)

1.    在init初始化实例声明参数是,必须使用self

当在init方法里去掉self,这个类不会报语法错误,但当在后面调用类的方法时会报实例没有对应参数(属性)的错误

AttributeError: Person instance has no attribute ‘name‘

2.在类中一般方法里调用实例的参数时也必须有self关键字

当没有使用self是,该方法会把参数作为全局变量,但没有声明这些全局变量,所以为报错

NameError: global name ‘name‘ is not defined

II.    __init__ 是对实例对象进行初始化

1.对象生命周期中初始化是最重要的一步;每个对象必须正确初始化后才能正常工作

2.通过初始化给实例赋予参数(属性),这个实例拥有的属性可以在类中的其它函数里引用

实例的参数不是全局变量,只对这个实例有效,实例也是一种对象。

				
时间: 2024-08-25 11:02:17

面向对象理解的相关文章

6、JAVA基础-二维数组 及 面向对象理解

1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}}; D:数据类型[][] 数组名 = {{...},{...},{...}}; (3)案例(掌握): A:二维数组的遍历 B:二维数组的求和 C:杨辉三角形 2:两个思考题(理解) (1)Java中的参数传递

java普通类、抽象类、接口、面向对象理解

1.面向对象编程: 面向对象编程的语言不止java一种,还有: simula 67(第一个面向对象语言,支持单继承和一定含义的多态和部分动态绑定): Smalltalk(第一个支持动态类型的语言,支持单继承.多态和动态绑定): EIFFEL(支持多继承.多态和动态绑定): C++(它的大部分基于类的特性继承自Simula.支持多继承.多态和部分动态绑定): C#(也支持单继承,与Java和C++等有很多类似之处): Python( [?pa?θ?n]是一种解释型.面向对象.动态数据类型的高级程序

C++——OOP面向对象理解

从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论.先看这篇教程是怎么来讲述OOP的.它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差.这个把下面这段代码描述成是Hacker Solution.(这帮人觉得下面这叫黑客?我估计这帮人真是没看过C语言的代码) public cla

面向对象理解随笔

结构和类是并列的,都是创建对象的模板 修饰符 Struct 结构名 1.结构是值类型,类是引用类型 2.结构不能包含显式的的无参数构造函数,结构成员会自动初始化默认值,不能再声明时赋值初始化 3.不能有基类(不能Base) 不支持继承 4.声明了结构类型后,可以使用New 运算符创建构造对象,也可以不使用new.如果不适用New,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用 面向对象的四个特性: 封装:不会破坏原有数据,相当于把数据提取出来在相应的类中进行处理执行 继承:   通过

基础部分-c#基础-oop(面向对象理解)

1:面向对象三大特点:封装 继承 多态 封装:把项目按规则分为块,每个对象, 稳定可直接调用,不稳定需要修改的的属性方法,把稳定的一部分以Public或者 Private,封装起来 继承:一个对象(人),有某个方法(开飞机),另一个对象(人)刚好没有,在程序最简单的就是继承这个开飞机的方法 多态:一个对象(人),每个人都有相同的方法(睡觉),但是每个对象睡觉的方式不同,有的人还是一个人睡,有的人则还 有对象陪着睡 2:用面向对象的思维来编写一个MVC项目:(单身狗打lol)    面向对象基本就

Java 面向对象理解

Java 面向对象的三大特性 封装 比如我们想描述人的属性,可以把人的相关属性name,age...封装成一个人类 Person 类,这样我们就实现从基本数据(属性)到类的封装 我们也可以把一些常用的方法封装到一个类里,作为工具类,比如数据格式校验的方法, 时间格式转换的方法, 这样我们就实现从常用方法到类的封装 有些情况下,我们的数据结构比较复杂,在一个类中的属性中也会声明另一个类的声明, 或者声明一个类的集合作为属性                class Teacher{        

JAVA面向对象理解

做测试也挺久了,大学时没有认真学会java,现在各个企业对测试人员要求越来越高,掌握编程语言的已经成了必备的技能:自己也断断续续学了很多次java,但都没有好好得把java学好,在要面临跳槽时总觉得自己的简历上总是少些亮点.终于下定决心,每天抽出2个钟学习java,为了在以后的简历中可以写上懂得java. 一.面向对象 现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类.书桌.计算机.高楼大厦等.把解决问题的方式简单化,于是就会思考这些对象是由哪些部分组成.通常对象分两部分:静

php面向对象理解(一)

常用的继承过程,以及对public.private.protected修饰符的理解: /*****************************父类********************************/ /** * person父类 */ class person { public $name; //共有属性在类的里面和外面都可以被访问,可以被子类继承 public $age; public $sex; protected $myprotect; //受保护属性,不能被外部访问,只

面向对象理解,封装、继承、多态知识总结

面向对象 类就是对象在程序中的模拟实现,类决定了对象将要拥有的属性和行为 类是一种数据类型,用户自定义的数据类型 类的组成:字段.属性.方法.构造函数等 对象时具体的,是类的具体实例.对象具有属性(特征)和方法(行为) 一.面向对象的三大特征: 封装 类和对象本身就是封装的体现 (1)属性封装了字段 (2)方法的多个参数封装成了一个对象 (3)将一堆代码封装到了一个方法中 (4)将一些功能封装到了几个类中 (5)将一些具有相同功能的代码封装到了一个程序集中(dll.exe),并且对外提供统一的访