面向对象方法

Python——面向对象

删除回忆录丶 提交于 2020-04-08 12:48:15
面向对象特点: 1. class 后首写字母必须大写 2. self为实例化对象的内存指向,每个方法默认必须有。必须要注意每一个self的内存对象指的是哪一个,还有就是在哪个方法内使用的。 基础格式: class Foo(object): #class + 类名称(首字母大写)(object为生成内存地址使用,py3不写也可以,py2必须写) def __init__(self,name,age,): #初始化,在执行序列化时,就需要执行初始化过程。 self.name = name #将对象和导入的参数进行对应。 self.age = age def func(self): print(self.name,self.age) #调用类的变量。 obj1 = Foo('xuan',22) #序列化一个类,并赋值给obj1这个变量中。 obj1.func() #运行obj1内的方法。 三大特点: 1. 封装 1. 将多个相同类型的方法封装到一个类中,使其统一,2. 将常用变量保存在类中,以供方法调用。 class Foo(object): name = 'xuan' #将常用变量存在类中,方便方法调用 def func(self): print(self.name) obj1 = Foo() print(obj1.name) 2. 继承 将一个或多个类关联到一起

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

好久不见. 提交于 2020-04-08 12:26:48
1. 类对象和实例对象   Python 中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间。类对象具有以下两种操作: 可以通过“类名()”的方式实例化一个对象。 可以通过“类名.类属性”的方式来访问一个类属性。   如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化、实例化,即实例化对象是类对象实例化之后的产物。 class Person:# 声明一个类对象 pass p1 = Person()#声明一个实例对象 print(Person)#输出结果:<class '__main__.Person'> print(p1)#<__main__.Person object at 0x0000015F7F94D0F0> 2 类变量与实例变量 2.1 概念上的区别   类变量是指是指该类的所有实例说共有的数据,实例变量是该类每一个实例所特有的数据。这么说的话可能还是很抽象,我们拿人类(Person类)来打比方,人类能移动(move=True),这是每一个人(张三、李四)都能做的,所以我们可以说人类能移动,张三能移动,李四也能移动,这里的移动(move)就是一个类变量。但每一个人都可能有不同的姓名(name)和年龄(age),张三可能20岁,李四可能30岁,但是我们不能说人类(Person)都是20岁或30岁

面向对象

♀尐吖头ヾ 提交于 2020-04-08 09:35:53
面向对象 封装 继承 多态 程序 = 数据 + 功能 模块可以存放 数据 和 功能 函数是存放 功能 的,不调用不执行。 列表,存储 数据 和 方法(函数名), 把 数据 和 功能 整合起来,分为一类的编程思想就叫面向对象编程 类和对象 类:class 先定义类,再调用类产生对象 定义:定义阶段就运行,产生类的名称空间 dict :查看名称空间 class Student: 驼峰体 ... 数据属性和方法属性 调用类实例化对象的时候,运行,对对象进行初始化 必须返回None,不能返回别的值 def __init__(self,x,y,z): self.x = x egon = Student(x,y,z) 实例化对象 egon.x = 1 Student.x 产生空对象,调用__init__方法初始化对象,返回初始化的对象 属性或对象先从对象中找,然后再去类中找,去父类,,, 从自身开始查找,逐级往父级查找对应属性或方法,直到根对象Object.prototype,没有返回undefined 类中的公共属性: 直接改类中的属性的值,所有对象的相应的值都改了, 如果改的是对象中的值,那么相当于重新创建了自己的值,不影响类中的值,和其它实例化的值 def init (self,x,y,z): Student.count += 1 bound method 绑定方法:绑定给谁就操作谁

面向对象的三要素之继承

微笑、不失礼 提交于 2020-04-08 06:40:18
继承:子类继承父类。 封装:数据的权限裕保密 多态:同一接口不同实现。 阿斯顿撒 继承用的比较多,封装多态用的比较少。继承示例代码: // 父类 class People { // 构造函数,初始化的时候也需要传什么东西,然后定义 constructor(name, age) { this.name = name; this.age = age; } eat() { alert(`${this.name} eat something`); } speak() { alert(`my name is ${this.name},age ${this.age}`); } } // 子类继承父类 class Student extends People { constructor(name, age, number) { super(name, age); // 将name和age传递给父类的构造函数来执行 this.number = number; // 相比较人来说多了一个属性学号 } study() { alert(`${this.name} study`); } } var liming = new Student("李明", 25, "A1"); var hanmeimei = new Student("韩梅梅", 25, "A2"); liming.study();

js高级-面向对象继承

狂风中的少年 提交于 2020-04-07 12:13:20
一、工厂模式创建对象及优缺点   继承就是把公共的部分抽象出来作为父类,基类。吃饭,跑步等   var a = {};  //批量创建不方便,不能重复设置公共属性的代码   //工厂模式出现了,创建10个Cat对象 每个对象都有年龄、姓名的属性,包括run方法   注意区分 js高级-函数的四种调用模式   function createCat(age,name){     var o = new Object();     o.age = age;     o.name = name;     o.run = function (){       console.log(o.name + 'running...')     }     return o;   }   var c = createCat(19,'xixi')   //缺点 c的原型 构造函数是Object 方法不共享 二、构造函数模式创建对象   function Cat(age,name){     this.name = name;     this.age = age;     this.run = function(){       console.log(this.name + 'running..')     }   }   var c1 = new Cat(19,'kk')  /

.Net学习 第2季07 C#面向对象 多态

爷,独闯天下 提交于 2020-04-07 01:59:21
.Net 视频学习第2季 C#面向对象 面向对象 多态 概念:让一个(父类)对象表现出多种(子类)类型的特性;三种方法:虚方法/抽象类/接口 方法一:虚方法 将父类方法标记为虚方法,使用关键字virtual在返回值类型前,这个方法可以被子类重写一遍(在子类方法返回值类型前使用关键字override) 没有使用虚方法下: public class Person { private string _name; public string Name { get{return _name;}     set{_name = value;} } public Person(string name) { this.Name = name; } public void SayHello() { Console.WriteLine("I am a person"); } } public class Chinese:Person { public Chinese(string name):base(name) { } public void SayHello() { Console.WriteLine("I am Chinese"); } } public class Japanese:Person { public Japanese(string name):base(name) { }

面向对象三大特征之【继承性】

自闭症网瘾萝莉.ら 提交于 2020-04-06 02:50:40
继承让我们更加容易实现类的扩展。比如:我们定义了人类,再定义Boy类就只需要扩展人类即可。实现了代码的重用,不用再重新发明轮子(don’t reinvent wheels )。 从英文字面意思理解,extends的意思是“扩展”。现实世界中的继承无处不在。比如: 上图中,哺乳动物继承了动物。意味着,动物的特性,哺乳动物都有;我们在编程中,如果新定义一个Student类,发现已经有Person类包含了我们需要的属性和方法,那么Student类只需要继承Person类即可拥有Person类的属性和方法。 未使用继承前的代码 <会发现有重复的代码>: public class TestExtends { } class Person { String name; int height; public void rest() { System.out.println("休息一会!"); } } class Student { String name; int height; String major; public void study() { System.out.println("学习两小时!"); } public void rest() { System.out.println("休息一会!"); } }   使用继承方法优化后的代码: public class

java学习的第一阶段总结

爷,独闯天下 提交于 2020-04-05 19:37:17
前言:在大一学习了C语言之后,基本掌握了一门面向过程的程序设计语言,本学期所学习的java是一门面向对象的语言,在问题的解决方面不像C一样是以过程来思考问题,而是要以面向对象的思维来解决问题。此篇文章是对于本学期前三次Java作业的一个阶段性总结,第一次作业花费了最多的时间,有一个测试点没有过,第二次花费了大概3.5小时,第三次大概花费了8小时,作业难度不大,只是需要自主学习的知识还有很多。 1.作业过程总结:   三次作业逐步将面向对象思维体现: 第一次的作业没看出老师所讲的啥叫面向对象思维,也不知道这种思维写作业和C语言有什么不一样。于是乎,第一次的作业我是在思考面向对象的基础上写出来的代码,但是写完之后总看不出啥为面向对象,啥为面向过程。脑海里只浮现老师所讲的:创建个对象、使用该对象的某个方法......稀里糊涂的,过程和对象好像没啥区别,也就那样用,随后就写完代码提交得了。 第二次作业来了,提出了更多要求,不再像第一次那样没有限制地写代码,而是点名要创建固定地方法名称。在第一次作业思索了这么久地面向对象地基础上,再加上老师已经给了提示(要求写出对应地方法),写起第二次作业来还算是比较上手,分分钟我就写好了一个题(代码写的比较慢,但思路还算是清晰),开始有点理解了啥是面向对象。 在第三次作业来之前,老师给教过了UML类图,因此第三次作业果不其然地出现了

面向对象前四周学习总结与反思

只谈情不闲聊 提交于 2020-04-05 17:41:58
经过了四到五周的学习,我对Java有了更深的认识,就作业而言,头两次我做的还不错,自我感觉良好,也许当时还没有涉及到面向对象,而是面向过程,做法和C语言相似,所以产生了java很简单的错觉,每次都留到最后一天来完成,我也因此付出了代价,第三次作业直接不及格,我痛定思痛,分析了一下这三次作业的异同以及我第三次不及格的原因。 第一次作业纯属是面向过程,一个main里面写完所有代码,和C语言无异,我有着较好的C语言基础所以轻轻松松拿了个A。第二次作业要求在类中编写方法,比第一次作业进了一步,但于我而言还是轻松通过。第三次作业更是层层递进,每一题都是跨了一个纪元的感觉,第一题和第二是个引导,让学生熟悉多个类的定义,第三题和第四题给了我们几个设计不一样的UML类图,因为对于OO编程不够熟悉,之间的细节很难把控,导致我编写的带码不断出错,再加上时间不够导致了最终第三次作业的不及格。这三次作业所花的时间比例为1:2:5。第三次耗费了大量的时间,但却达不到想要的成果,究其原因还是因为对OO编程的了解不足,经过这几天的反思,我发现OO编程更为严谨,不但需要考虑边界值,还需要精心设计实用的结构以及确定每个类之间的关系。如果设计的好对后面的编程大有助益,几乎不会出现重复的代码,main方法也会变得更为简洁,但需要花费更多的时间进行分析设计。 面向过程注重的是过程,从头到尾的的编程

第一阶段作业总结

时光总嘲笑我的痴心妄想 提交于 2020-04-05 16:36:37
------------恢复内容开始------------ 前言 第一阶段的作业总共有三次PTA上的作业,第一次作业有5题,第二次以及第三次作业都为4题并且题目基本是相同的,但是要求确实不同的编程思维,所以我个人感觉第一阶段的作业重点在让我们由原本的面向过程的编程方式慢慢过渡到目前我们所重点学习的面向对象编程方式。经过本次作业可以让我们从了解面向对象思维到运用面向对象思维方式到我们的编程过程之中。我个人感觉Java毕竟是C语言基础上发展的语言,所以可以说比C语言更有优势,C语言中需要对函数和变量进行定义和声明,而JAVA只用定义,不用声明; Java语言有new关键字,用于创建引用对象,C语言没有此类关键字; C语言不是面向对象的,而是面向过程,而JAVA是面向对象的语言;C语言可以直接操作内存,而JAVA不能;C语言有指针,而JAVA没有等等。 1.作业过程总结 ①总结三次作业之间的知识迭代关系; 第一次作业算是简单的循环运用,第二、三次则较复杂同时第三次要求运用面向对象的思维来编写。 ②如何通过作业逐步从面向过程过渡到面向对象; 在第一次作业以及第二次作业我编程时感觉回到了大一学习C语言时的前几次作业,题目类型差不多此外就是编程时的思维方式改变还不太大,但第三次作业编写时明显感觉与前两次不同,并且由于第二次作业与第三次作业的题目相同