构造函数

C#类中的成员

筅森魡賤 提交于 2020-03-28 13:16:21
@ 目录 字段 属性 方法 构造函数 类和对象的简单解释 创建类和对象 类中成员的归属问题 字段 字段的声明与声明变量类似,可以添加访问修饰符,通常情况下字段设置为私有的,然后定义属性对字段的读写进行限制 一般的命名规范约定,私有字段使用下划线前缀、小驼峰命名 private int _age //定义一个私有字段_age 属性 属性拥有两个访问器(get和set),用于控制读取和写入,通常和字段配套使用,用来对字段进行读写限制 //定义一个Age属性,限制赋值给_age字段的值为18到60岁之间 //get和set类似于不能接受参数的方法,value是赋给Age属性的值 public int Age { get { return _age; } set { if(value >= 18 && value<=60) _age = value; } } 方法 正式的C#术语中区分函数和方法,但是在初期,我们也可以把方法当成函数来理解 //定义一个SayAge方法,传递一个int类型的变量给SayAge方法,输出“我的年龄是~” public void SayAge(int age) { Console.WriteLine($"我的年龄是{age}") } 构造函数 构造函数是在创建对象的时候调用的方法,主要作用是初始化字段(为字段赋值),构造函数支持重载,即根据不同的参数签名

Javascript中的反射机制(五)

时光怂恿深爱的人放手 提交于 2020-03-28 07:32:01
一: 什么是反射机制 反射机制指的是程序在运行时能够获取自身的信息。例如一个对象能够在运行时知道自己有哪些方法和属性。 二: 在JavaScript中利用for(…in…)语句实现反射 在JavaScript中有一个很方便的语法来实现反射,即for(…in…)语句,其语法如下: for(var p in obj){ //语句 } 这里var p表示声明的一个变量,用以存储对象obj的属性(方法)名称,有了对象名和属性(方法)名,就可以使用方括号语法来调用一个对象的属性(方法): for(var p in obj){ if(typeof(obj[p])=="function"){ obj[p](); }else{ alert(obj[p]); } } 这段语句遍历obj对象的所有属性和方法,遇到属性则弹出它的值,遇到方法则立刻执行。在面向对象的JavaScript程序设计中,反射机制是很重要的一种技术,它在实现类的继承中发挥了很大的作用。 反射的一个很经典实例: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script language="JavaScript"

有关于反射

大城市里の小女人 提交于 2020-03-28 07:18:59
有关于反射 反射是一种计算机方式。是程序可以访问、检测和修改它本身状态行为的一种能力。 程序集包括模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。 1.使用Assembly定义和加载程序集,加载在程序清单中列出的模块,以及从此程序集中查询类型并创建该类型的实例。 2.使用Module了解如下的类似信息:包含模块的程序集以及模块中的类等。您还可以获取在模块上课定义的多有全局方法或其他特定的非全局方法 。 3.使用ConstructorInfo了解如下的类似信息:构造函数的名称、参数、访问修饰符(如public或private)和实现详细信息(abstract或virtual)等。 4.使用Type的GetGonstructor方法来调用特定的构造函数。 5.使用MethodInof来了解如下的类似信息:方法名称、返回值类型、参数、访问修饰符(如public或private)和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。 6.使用FieldInfo来了解如下的类似信息:字段的名称、访问修饰符(如public或private)和实现详细信息

C++构造函数初始化列表

ぃ、小莉子 提交于 2020-03-28 07:11:19
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。 例如: Example::Example() : ival(0), dval(0.0) {} //ival 和dval是类的两个数据成员 上面的例子和下面不用初始化列表的构造函数看似没什么区别: Example::Example() { ival = 0; dval = 0.0; } 的确,这两个构造函数的结果是一样的。但区别在于:上面的构造函数(使用初始化列表的构造函数) 显示的初始化类的成员 ;而没使用初始化列表的构造函数是 对类的成员赋值 , 并没有进行显示的初始化 。 初始化和赋值对 内置类型的成员 没有什么大的区别 ,像上面的任一个构造函数都可以。但 有的时候必须用带有初始化列表的构造函数 : (1) 成员类型是没有默认构造函数的类 。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。 (2) const 成员或引用类型的成员 。因为const对象或引用类型只能初始化,不能对他们赋值。 C++在类的构造函数中,可以两种方式初始化成员数据(data member)。 1,在构造函数的实现中,初始类的成员数据。诸如: class point { private: int x,y; public

ES6中class的继承

人走茶凉 提交于 2020-03-27 23:08:20
ES6中class的继承 父类(基类) 子类 extends 关键字 //父类 class Human{ //父类的构造函数 constructor(name,age,sex,hobby){ this.name=name this.age=age this.sex=sex this.hobby=hobby } desc(){ const {name,age,sex,hobby}=this console.log(`我的名字是${ name },我今年${ age }岁,我的性别是:${ sex },我的爱好是:${ hobby }`) } eat(){ console.log("吧唧吧唧") } } //子类 前端工程师类 class FEEnginner extends Human{ constructor(name,age,sex,hobby,skill,salary){ super(name,age,sex,hobby)//在this之前调用super,实际上就是调用父类的构造函数 this.skill=skill this.salary=salary } say(){ console.log(this.skill.join(",")) } } const feer=new FEEnginner( "cyy", 18, "女", "study", ["es6","vue",

ES6 class -- Class 的基本语法

血红的双手。 提交于 2020-03-27 14:51:07
类: 降低维护成本、使代码高度复用、扩充方便灵活 OOP 面向对象开发 核心:封装 类->工厂->对象 ES6中的类 //车类 class Car{ //构造函数 constructor(){ console.log("开始造车"); } } //实例化,类->对象 let c=new Car(); 构造函数的写法有点类似于简洁表示法: //构造函数的写法类似简洁表示法 let obj={ //普通写法 fn:function(){ }, //简洁表示法 fn2(){ } } //车类 class Car{ //构造函数 constructor(wheel,color,length,width){//接收参数 //给属性赋值,this指向当前实例化的结果 this.wheel=wheel; this.color=color; this.length=length; this.width=width; this.speed=0; } //方法 speedUp(){ this.speed+=1; } } //实例化,类->对象 let c=new Car(3,"#abcdef",20,40); console.log(c); c.speedUp();//调用实例(对象)的方法 console.log(c.speed);//获取实例(对象)的属性 不同实例之间是相互独立的 //车类

浅谈JavaScript创建对象

做~自己de王妃 提交于 2020-03-27 11:34:36
  好久没写博客了,今天补一下,废话不多说,咱们进入正题。   在java中,有这么一句话叫”万物接对象“,那么我今天就来说一下在JavaScript中怎么创建对象,当然要与其他语言作对比,作参照,才能更容易理解。   对象由什么组成,方法与属性(行为)。   在java中怎么创建对象,无非就是 Object obj = new Object( ),没错,JavaScript中也可以使用如此,细心的同学会发现,大多数语言在大多数方面有共通之处, 方法一、    工厂模式:       对于工厂模式,这个词大家都不陌生,陌生的话脑补一下”工厂“的车间的生产方式,没错,就是那样,举个栗子:       function dog(name, age, voice){         var obj = new Object();         obj.name = name;         obj.age = age;         obj.voice = voice;         obj.bark = function(){           alert(this.voice);         }         return obj;       }       var dog_1 = dog("kugou", 12, " o o o ");       dog_1

javascript 基础知识汇总

不问归期 提交于 2020-03-27 09:54:14
1、 在ES5中, 变量声明有两种方式,分别是var和function, var用于声明普通的变量,接收任意类型,function用于声明函数。另外ES6新增了let、const、import和class等声明方式,let用于声明普通变量(与var的区别在于拥有块级作用域,在作用域内不能重复声明),const用于声明静态变量,import用于声明模块,class用于声明类。 2、JS数据类型共有7种,分别是(1)数值Number、(2)字符串String、(3)布尔Boolean、(4)符号Symbol、(5)Null、(6)Undefined、(7)对象Object。其中Object是引用类型,其他都是原始类型,原始类型也成为基本类型或者是简单类型,因为其占用空间固定,是最简单的数据段,为了便于提升变量查询速度,将其存储在栈中(按值访问)。引用类型由于其值的大小会改变,所以不能将其存放在栈中,否则会降低变量的查询速度,因此其存储在堆中,存储在变量处的值是一个指针,指向存储对象的内存处(按址访问),对于引用类型的值,可以为其添加属性和方法,也可以改变和删除其属性和方法,但基本类型不可以添加属性和方法 3、javasrcipt可以通过typeof来判断原始数据类型,但不能判断引用类型,要知道引用类型的具体类型,可以通过Object原型上的toString来判断。 4

javascript之继承

流过昼夜 提交于 2020-03-27 09:41:03
一、类与对象 1、对象与类 1 var a={};//对象,无法用new实例化2 function Person(name){3 this.name=name;4 }5 Person.prototype.showName=function(){6 alert(this.name);7 }8 var p=new Person("zhangmeng");9 p.showName(); 组合使用构造函数模式和原型模式实现的类: 构造函数定义属性;原型实现定义方法和属性共享 1 function Person(name,age,job){ 2 this.name=name; 3 this.age=age; 4 this.job=job; 5 this.friends=["y"]//共享属性 6 }//构造函数定义实例属性 7 Person.prototype={ 8 constructor:Person, 9 sayName:function(){10 alert(this.name);11 }//原型模型用于定义方法和共享属性12 }13 var p1=new Person("zhangmeng",24,"Coding");14 var p2=new Person("jiangyu",26,"Fighting");15 p1.friends.push("dy");16 console

javascript创建对象的方法总结

强颜欢笑 提交于 2020-03-27 08:42:17
Javascript创建对象 最简单的方法:创建object实例。 var person=new Object(); person.name="Joey";person.age=28; person.sayName=function(){ alert(this.name); }; 或者使用字面量的形式会简洁一些 var person={ name:"Joey", age:28, sayName:function(){alert(this.name);} }; 缺点:如果要创建多个实例会产生大量重复代码,最好只用于创建单个对象。 工厂模式 ECMAscript中是没有类的,由于利用Obeject创建多个实例代码量太多,于是考虑使用一个函数将创建对象的过程封装起来。 function creatPerson(name,age){ var o=new Object(); o.name=name; o.age=age; o.sayName=function(){ alert(this.name)}; } return o; var person1=creatPerson("Joey",28); var person2=creatPerson("Mary",20); 在creatPerson函数中,实例化了一个对象o,给了o三个属性(sayName属性对应的是一个函数)