构造函数

javascript中的数据类型

耗尽温柔 提交于 2020-02-29 15:53:06
数据类型: 基本数据类型 :数值(number)、字符串(string)、布尔(Boolean)、null、undefined 复杂数据类型 :对象(object)、构造函数(function)、数组(array)等 1. 基本数据类型 基本数据类型存储在栈里 number 数值类型 一切数字都是数值类型(包括二进制,十进制,十六进制等) NaN(not a number)一个非数字 var num = 123; string 字符串类型 被引号包裹的所有内容(可以是单引号也可以是双引号) var str = ‘string’; boolean 布尔类型 只有两个值(true 或者 false) var bool = true; null null类型 只有一个,就是 null,表示空的意思 undefined undefined类型 只有一个,就是 undefined,表示没有值的意思 2.复杂数据类型 复杂数据类型内容存储在堆里,地址存储在栈里 复杂数据类型内容较多,不做详细解释 (1) object 对象 存储了一些基本数据类型的一个集合 对象是一个键值对的集合,每一个键都是一个成员 字面量创建: var obj = { } obj . name = 'jack' 内置构造函数创建: var obj = new Object ( ) obj . name = 'rose'

js之prototype、__proto__、constructor之间的关系

天涯浪子 提交于 2020-02-29 13:49:35
想知道三者之间的关系,我们就要了解每一个作用 一:构造函数原型对象 prototype 问 : 为何要有prototype这个对象呢? 首先我们创建一个构造函数: function Person ( name , age ) { this . name = name this . age this . write = function ( ) { console . log ( '我会写' ) } } var lwl = new Person ( '小红' , 18 ) var lll = new Person ( '小明' , 19 ) console . log ( lwl . write === lll . write ) //false 我们发现 :我们创建的两个Person的实例对象的write并不是同一个write函数。 那么如果创建好多个实例的话,这就很浪费空间,因为每个实例都要开辟一个存储函数的格外空间。( 注意 :函数是一个复杂的数据类型,会额外开辟空间来储存) 因此构造函数就有了一个prototype属性,该属性是一个对象!因此我们也称为 原型对象 ! console . log ( typeof Person . prototype ) //object javascript规定,每一个构造函数都有一个prototype属性,它指向了另一个对象

java学习笔记(五)

送分小仙女□ 提交于 2020-02-29 13:47:20
Java 方法 方法的定义 一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符 :修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。 方法名 :是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型 :参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 方法体 :方法体包含具体的语句,定义该方法的功能。 如: public static int age(int birthday){...} 方法的重载 /** 返回两个整型变量数据的较大值 */ public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; }

java的构造函数和构造代码块

南笙酒味 提交于 2020-02-29 13:31:56
一:构造方法 Java当中有两种函数:构造函数和普通函数(实例函数)。 构造函数的特点: 构造函数的函数名字与类名相同 构造函数不可以定义返回值 构造函数不可以写return语句 每个类默认有一个无参数构造函数 构造函数可以重载但不能重写 构造函数的作用: 给对象进行初始化 注意 : 虽然每个类都有一个默认的不带参数的构造方法,但是我们重写了这个类的构造方法之后,而又没有不带参数的构造方法, 此时程序就会报错,不能通过编译。 如下:不带参数的Person()构造方法被注释掉之后就会报错。 public class Person { private String name;//无参构造方法被注释掉之后会报错。 /* Person(){ System.out.println("I'm a Person constructor."); } */ Person(String name){ System.out.println("I'm a overloaded constructor."); } } class PersonTest{ public static void main(String[] args) { Person person=new Person();//这句会报错,因为找不到不带参数的构造方法 } } 二:构造代码块 作用:给对象初始化用 对象已建立就运行

php面向对象基础知识点总结

故事扮演 提交于 2020-02-29 13:17:44
下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册。 1.类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。 2.属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是 在编译阶段之后在运行阶段运算出的常数。 3.在类的成员方法里面,可以通过$this->property(property是属性名字)这种方式来访问类的属性、 方法,但是 要访问类的静态属性或者在静态方法里面却不能使用,而是使用self::$property。 4.在类的非静态方法里面可以使用伪变量$this,这个伪变量是调用该方法的实例化对象引用 5.常量的值必须是一个定值,不允许修改,且不能是变量,类属性或其它操作(如函数调用)的结果。 <?php class MyClass { const constant = 'constant value'; function showConstant() { echo self::constant . "\n"; } } echo MyClass::constant . "\n"; $n=new MyClass(); $n->showConstant(); ?> 6.构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

构造和析构

馋奶兔 提交于 2020-02-29 11:18:02
构造函数 对象在创建时,必须调用构造函数 若没有定义构造函数,使用默认构造函数,若使用了构造函数,则默认构造函数消失,需要自己重新定默认构造函数 构造函数可以重载 初始化列表 使用方法: Student : : Student ( char * name , int age , float score ) : m_name ( name ) , m_age ( age ) , m_score ( score ) { } 成员变量的初始化顺序与初始化列表中列出的变量的顺序无关, 它只与成员变量在类中声明的顺序有关 const成员变量的初始化必须用初始化列表 析构函数 不能被重载 不能调用(只能由编译器调用) 在销毁对象是自动执行 来源: CSDN 作者: 和平精英总指挥 链接: https://blog.csdn.net/weixin_44997886/article/details/104570025

Replace Subclass with Fields (以字段取代子类)

点点圈 提交于 2020-02-29 04:40:37
Summary : 你的各个子类的唯一差别只在“返回常量数据”的函数身上 。修改这些函数,使它们返回超类中的某个(新增)字段,然后销毁子类。 Motivation: 建立子类的目的,是为了增加新特性或变化其行为。有一种变化行为被称为“常量函数” (constant method) ,它们会返回一个硬编码的值。这东西有其用途:你可以让不同的子类中的同一个访问函数返回不同的值。你可以在超类中将访问函数声明为抽象函数,并在不同的子类中让它返回不同的值。 尽管常量函数有其用途,但若子类中只有常量函数,实在没有足够的存在价值。你可以在超类中设计一个与常量函数返回值相应的子弹,从而完全去除这样的子类。如此一来就可以避免因继承而带来的额外复杂性。 Mechanics: 1. 对所有子类使用 Replace Constructor with Factory Method. 2. 如果有任何代码直接引用子类,令它改而引用超类。 3. 针对每个常量函数,在超类中声明一个 final 字段 4. 为超类声明一个 protected 构造函数,用以初始化这些新增字段。 5. 新建或修改子类构造函数,使它调用超类的新增构造函数。 6. 编译,测试。 7. 在超类中实现所有常量函数,令它们返回相应字段值,然后将该函数从子类中删掉 8. 没删除一个常量函数,编译并测试。 9. 子类中所有的常量函数都被删除后

《Effectirve C++》笔记(条款1~10)

╄→гoц情女王★ 提交于 2020-02-29 03:54:21
条款1:视C++为一个语言联邦 C是多种范式汇集的语言,包括C的过程、C面向对象、Template泛型(STL模板库)、模板元编程、lambda。(后面自己补充可能由曲解原文意思) 条款2:尽量以const、enum、inline替换#define 单纯变量用const或enum替换define,形势函数的宏用inline函数替换。 class ttt{ enum{NumTurns=5}; int scores[NumTurns]; } 用枚举替换更像define,因为枚举和define均不可取地址,而const的变量可以被取地址。 条款3:尽可能使用const const char *p; 指针非常量,数值为常量--我还是喜欢声明时把*和变量放一起,构成一个整体,这样也容易理解,const就是对这个整体修饰的这个整体不可变也就是*p也就是值不可变。char * const p;指针常量,值非常量 对函数指定const:void a() const;此时函数不可调用非const成员(可以读非const数据成员),如某个数据成员需要被const方法操作,可以用mutable修饰:mutable boos bbb; const char& operator[](std::size_t position)const { XXXXX return pText[position]; }

python入门教程:实现打砖块小游戏代码实例

僤鯓⒐⒋嵵緔 提交于 2020-02-29 00:12:33
这篇文章主要介绍了Python打砖块小游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 这次用Python实现的是一个接球打砖块的小游戏,需要导入pygame模块,有以下两条经验总结: 1.多父类的继承2.碰撞检测的数学模型 知识点稍后再说,我们先看看游戏的效果和实现: 一、游戏效果 二、游戏代码 #导入模块 import pygame from pygame.locals import * import sys,random,time,math class GameWindow(object): '''创建游戏窗口类''' def __init__(self,*args,**kw): self.window_length = 600 self.window_wide = 500 #绘制游戏窗口,设置窗口尺寸 self.game_window = pygame.display.set_mode((self.window_length,self.window_wide)) #设置游戏窗口标题 pygame.display.set_caption("CatchBallGame") #定义游戏窗口背景颜色参数 self.window_color = (135,206,250) def backgroud(self)

C++之保护和私有构造函数与析构函数

只谈情不闲聊 提交于 2020-02-28 19:57:43
一、构造函数 1、保护 构造函数定义为protected后,就意味着你不能在类的外部构造对象了,而只能在外部构造该类的子类的对象,比如: class Base { protected: Base() {} ... }; class Derived : public Base { public: Derived() {} ... }; Base b; //error Derived d; //ok 2、私有 构造函数定义为private后,意味着不仅仅不能在类的外部构造对象了,而且也不能在外部构造该类的子类的对象了,只能通过类的static静态函数来访问类的内部定义的对象,单件singleton模式就是私有构造函数的典型实例: class CLog { private: CLog() {}; public: ~CLog() {}; public: static CLog* GetInstance() { if (NULL == m_sopLogInstance) { CLock oInstanceLock; oInstanceLock.Lock(); if (NULL == m_sopLogInstance) { m_sopLogInstance = new CLog(); } oInstanceLock.Unlock(); } return m_sopLogInstance; }