面向对象方法

python语法基础-面向对象-基础-长期维护

空扰寡人 提交于 2020-02-10 08:06:08
############### 类的基本操作 ############## """ 类的基本认识: 1,类就是一个模子 2,dict,list都是类,具体的一个字典和列表就是一个类的实例,就是对象, 3,类定义的时候,类名后面可以有括号,也可以没有括号, 4,类传参是通过__init__方法来传参的,只要实例化一个对象,就会调用这个方法, 5,一个类有三要素:类名,属性,方法,类名要大写,类名使用大驼峰命名法, 6,self代表类的实例,必须要有,名字不必须是self,但是约定俗成就是self """ """ 类的初始化方法(构造方法): 类在实例化的时候,会自动执行以下操作: 1,为对象在内存中分配空间--创建对象 2,为对象的属性设置初始值--初始化方法 这是初始化方法就是 __init__方法,这是对象的内置方法,初始化方法是专门来定义一个类具有哪些属性的方法!!! 如果定义属性? 语法:self.属性名=属性的初始值 第一种:self.name="tom" # 这种就把这个属性固定死了,不好,但是在类中,我们不希望属性固定 第二种:我们可以给函数增加一个形参,用形参来替换被固定死的值, """ class Person: # 类名 country = 'China' # 创造了一个只要是这个类就一定有的属性 # 类属性 静态属性 def __init__(self,

数组<------->面向对象思想

感情迁移 提交于 2020-02-10 03:26:25
数组 [ ]: 存储相同类型的多个数据 1.变量:存储单个数据 2.数组:存储相同类型的多个数据 数组的特点 : 1. 数组是引用数据类型 2. 数组是个容器 , 长度一旦确定不可改变 3. 数组中存放的多个数据的数据类型要求一致 4. 数组中的数据是有序的 ,( 可以通过索引或者下标 ) 索引从开始 操作数组中的数据 : 根据下标 数组名[下表|索引] 数组的声明: 数据类型 [] 数组名; 数据类型 数组名 [] ; 数据类型可以是基本数据类型|引用数据类型:指明数组中要存放数据的类型 数组的初始化: 动态初始化 : 指明数组的大小,并创建数组,在内存中为其分配空间,后续再为其赋值; 数据类型[] 数组名= new 数据类型[长度]; 只 声明未赋值系统提供默认值:整数:0,布尔:false,字符:’ ’,小数:0.0,字符串:null; 静态初始化: 创建的同时赋值,根据数据的个数确定数组的长度 数据类型[]数组名=new 数据类型[]{值1,值2,值3….}; 数据类型[] 数组名 = {值1,值2,值3…}; 数组中数据的个数|数组的长度: 数组名.length 数组中最后一个数据的索引: 数组名.length-1 数组的遍历: 1. 普通for循环 i- à 数组中的索引 //遍历数组 普通for 定位的是数组中的每一个空间 for(int i=0;i<=arr3

Javascript 面向对象二:继承

天大地大妈咪最大 提交于 2020-02-09 18:29:28
现在有一个"动物"对象的构造函数。   function Animal(){     this.species = "动物";   } 还有一个"猫"对象的构造函数。   function Cat(name,color){     this.name = name;     this.color = color;   } 一、 构造函数绑定 第一种方法也是最简单的方法,使用call或apply方法,将父对象的构造函数绑定在子对象上,即在子对象构造函数中加一行:   function Cat(name,color){ Animal.apply(this, arguments);     this.name = name;     this.color = color;   }   var cat1 = new Cat("大毛","黄色");   alert(cat1.species); // 动物 PS:此处要注意方法call与apple的区别与相同之处: 1.都是在特定的作用域中调用函数。 2apply()接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。 call()方法第一个参数与apply()方法相同,但传递给函数的参数必须列举出来。 二、 prototype模式(原型链继承) 第二种方法更常见,使用prototype属性。 如果"猫

【JavaScript】面向对象:hasOwnProperty()方法与in操作符

社会主义新天地 提交于 2020-02-09 18:16:15
hasOwnProperty()方法 使用 hasOwnProperty()方法(是从 Object 继承来的)可以检测一个属性是存在于实例中,还是存在于原型中。只在给定属性存在于对象 实例 中时,才会返回 true。 function Person ( ) { } Person . prototype . name = "Nicholas" ; Person . prototype . age = 29 ; Person . prototype . job = "Software Engineer" ; Person . prototype . sayName = function ( ) { alert ( this . name ) ; } ; var person1 = new Person ( ) ; var person2 = new Person ( ) ; console . log ( person1 . hasOwnProperty ( "name" ) ) ; //false person1 . name = "Greg" ; console . log ( person1 . name ) ; //"Greg"——来自实例 console . log ( person1 . hasOwnProperty ( "name" ) ) ; //true

javascript面向对象——继承

南楼画角 提交于 2020-02-09 18:11:22
一、 构造函数绑定 先来看下面两个函数的意义: function ClassA(sColor){ this.color=sColor; this.sayColor=function(){ alert(this.color); }; } function ClassB(sColor,sName){ this.newMethod=ClassA; this.newMethod(sColor); delete this.newMethod; this.name=sName; this.sayName=function(){ alert(this.name); }; } 上面代码就是继承的函数里面,新建一个变量newMethod,然后将ClassA的指针指向这个变量,然后在ClassB中调用这个方法,这样实际上newMethod引用的作用域也就是说this的指向就是ClassB实例化的对象了。 注意:最后一行删除对ClassA的引用,这样以后就不能再调用它。所有的新属性和新方法都必须在删除了新方法的代码后定义,否则覆盖超类的相关属性和方法 为证明前边的有效,运行下面例子 var objA=new ClassA("red"); var objB=new ClassB("blue","Nicholas"); objA.sayColor(); objB.sayColor(); objB

JavaScript 面向对象 ( 继承 )

这一生的挚爱 提交于 2020-02-09 15:57:30
提问:    现在有一个"动物"对象的构造函数。 function Animal(){ this.species = "动物"; }   还有一个 "猫 "对象的构造函数。 function Cat(name,color){    this.name = name;    this.color = color; }      怎样才能使"猫"继承"动物"呢? 一、 构造函数绑定   先来看一段代码: function ClassA(sColor){ this.color=sColor; this.sayColor=function(){ alert(this.color); }; } function ClassB(sColor,sName){ this.newMethod=ClassA; this.newMethod(sColor); delete this.newMethod; //删除对ClassA的引用,这样以后就不能再调用它。所有的新属性和新方法都必须在删除了新方法的代码后定义,否则覆盖超类的相关属性和方法 this.name=sName; this.sayName=function(){ alert(this.name); }; }      这种方式貌似很复杂,其实道理很简单,就是在继承的函数里面,新建一个变量newMethod,然后将ClassA的指针指向这个变量

javascript面向对象

与世无争的帅哥 提交于 2020-02-09 15:11:09
# javascript面向对象(一) 对象其实就是一种引用类型。而对象的值就是引用类型的实例。在JavaScript 中引用类型是一种数据结构,将数据和功能组织在一起。它也常被称做为类,但JavaScript 中却没有类的概念。虽然JavaScript 是一门面向对象的语言,却不具备传统面向对象语言所支持的类和接口等基本结构。 ## 对象的创建以及常用操作 ## 1. **使用new运算符** var user = new Object(); //使用new运算符创建一个对象 user.name = 'tina; //给对象添加属性 user.age = 22; user.address = '四川成都'; 2. **对象字面量(JSON方式)** var user = { name:'编程浪子', age:22, address:'四川成都' }; 3. **简单方式(传统赋值方式)** var user = {}; user.name = 'tina'; //给对象添加属性 user.age = 22; user.address = '四川成都'; 4. **属性的调用** 对于对象属性的调用有两种方式: 调用方法如下: alert(user.name + " " +user.age);//返回 '编程浪子 四川成都' 另一种方法: alert(user['name'] +

面向过程和面向对象及面向对象的三大特征

痴心易碎 提交于 2020-02-09 07:39:17
新手继续,大牛可以关闭浏览页了。 英文及缩写 :   面向过程:procedure oriented programming POP   面向对象:object oriented programming OOP 面向对象和面向过程的 历程 :   面向过程编程采取的是时间换空间的策略,因为在早期计算机配置低 ,内存小,如何节省内存则成了首要任务,哪怕是运行的时间更长。随着硬件技术的发展,硬件不再成为瓶颈,相反更好的模拟现实世界、系统的可维护性等问题凸显出来,于是面向对象设计应运而生。当下:应用在 PC 机上的一般应用系统,由于不太需要考虑硬件的限制,而系统的可维护性等方面却要求很高,一般采用面向对象方式;而在内存限制有所要求的嵌入式系统,则大多采用面向过程方式进行设计编程。 定义 :   面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可。面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。下面举一例说明面向过程和面向对象编程。 首先使用面向过程: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。

Java面向对象

社会主义新天地 提交于 2020-02-08 21:59:04
unit2 面向对象 1.面向对象:封装  继承  多态  面向对象强调结果  面向过程强调步骤 2.类与对象:对象是具体的实体(行为+属性),类是抽象的模板(成员方法+成员变量)   导包--创建对象--使用: import cn.itcast.first.demo06.Student;//导包 Student stu = new Student();//创建对象 System.out.println(stu.age);//使用对象成员变量 stu.eat();//使用对象成员方法   成员变量:外,类中,有默认值,堆  局部变量:内,方法中,无默认值,栈   成员变量:属性    成员方法:行为     封装性:核心思想,一个方法就是一种封装,调用方法就玩了,为了隐藏内部细节 3.private关键字:保护本成员变量,提高安全性 private int age;  //用private关键字将需要保护的成员变量进行修饰,但是private只能在本类内直接访问,超出则报错//间接访问private变量,就是定义一对set和get方法   this关键字:成员变量和局部变量重名时,就近原则,访问局部变量   this.name = name;    //this用来区别成员变量和局部变量,避免变量重名     API补充:JDK_API_1_6_   例子: 定义标准类

接口与抽象类那点事

喜夏-厌秋 提交于 2020-02-08 20:36:20
也谈接口和抽象类区别 好象这是一个老生常谈的问题,最近有个学生问我他们的区别,于是我就又想起这个话题。 有不少的文章在描述这两者,但好象都没有怎么从初学者的浅显角度来看。 其实这两者有很多相识之处,当然也有很多不同之处。要理解它们,应该先从面向对象思想开始。面向对象思想里面,最基本的就是封装,继承和多态。所谓封装,说的小,方法(函数)也就是对一种操作的封装,说的大,用类来描述一个具体的对象。 那么在面向对象程序中应该说对封装还有一层新的定义,即将类的描述抽象化,也就是说描述类的外貌而不去考虑它的实际。 那么我们回过头来看抽象类,它必须被继承使用,描述的其实是一种继承关系,即"is a"的关系。类继承它,也就是说类拥有它所有抽象方法等,那么也就是类遵循了它所定义的规范。但是呢,这种规范是通过继承而来,类的发展必须依赖它的父类。 abstract class 工作 { abstract void 上班() } class 张三 : 工作 { } abstract class 工作 { abstract void 上班() } class 人: 工作 { } class 李四 : 人 { } 我们从这个例子中不难看出,张三和李四同样都遵循抽象工作的规范,都拥有上班这个方法,但是呢,他们的发展始终受到父类的影响。 当然,我这里只是从它们使用的角度来看,我们还能从他们设计角度度来看