构造函数

Java反射机制详解

末鹿安然 提交于 2020-02-05 23:50:07
文章目录 1、反射机制 1.1什么是反射机制 1.2反射机制能做什么 1.3反射机制的相关API 2、获取一个Class对象(反射)的三种方式 2.1类文字 2.2使用Object类的getClass()方法 2.3使用Class类的forName()方法 3、通过Class对象获取一个类的信息(类名、包名、修饰符等) 4、通过Class对象获取一个类的字段 5、通过Class对象获取一个类的构造函数 6、通过Class对象获取一个类的实例方法 7、通过Class对象创建一个类的对象 6.1无参构造函数 6.2有参构造函数 6.3通过构造的实例调用方法 8、通过反射创建、获取、修改数组信息 1、反射机制 1.1什么是反射机制 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 1.2反射机制能做什么 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和方法; 在运行时调用任意一个对象的方法; 生成动态代理。 1.3反射机制的相关API 通过一个对象获得完整的包名和类名 实例化一个类对象(使用构造函数,默认的和带参数的) 返回一个类实现的接口 取得一个类的父类

C++学习笔记3

妖精的绣舞 提交于 2020-02-05 19:09:32
三、类和对象 1、类的概念 类是具有共同性质的一类事物的统称, 而对象是根据抽象的概念实例化出来的一个实际对象 C 结构: 结构体成员是数据; C++中的类: 类的成员是 数据和函数(数据成员、成员函数) 成员的访问权限有: 1) 私有成员: private, 它只能被该结构中的其他成员访问 2) 保护成员: protected 不涉及到派生的时候与 private 一样, 后面会详细讲解 3) 公有成员: public, 即可以被结构中的其他成员访问, 又可以被结构外的其他成员访问 把结构体的struct换成class即成为类的定义 类的数据成员默认访问权限是私有的,类的成员和结构体成员的访问方式一致,都是用点 #include<iostream> using namespace std; class stu{ public : int num; void setAge(int a) { age = a;//即使age在下面定义也可以在上面先使用,C++认为类是一个整体 } int getAge(void) { return age; } private: int age; char name[100]; }; int main() { stu lucy; lucy.num=100; cout << "lucy.num = "<< lucy.num<<endl; lucy

Kotlin学习笔记(四):Kotlin中的类与对象

拥有回忆 提交于 2020-02-05 16:57:02
一、简介 Kotlin 中使用关键字 class 声明类,后面紧跟类名 。 Kotlin 中的类默认是 public final 的,所以如果不需要类为 final 的时候,需要使用 open 关键字修饰类,如果没有声明父类。则父类默认为 Any 类。 //定义一个空类 open class Animal interface Run //继承类或接口时,使用 : 隔开,父类和接口间使用 , 隔开 class Dog : Animal ( ) , Run 二、构造函数 1. 主构造器 主构造器放在类名后,不能包含任何代码,初始化代码可以放在初始化代码段中,初始化代码段使用 init 关键字作为前缀。 注意: 主构造器的参数可以在初始化代码段中使用,可以通过主构造器来定义属性并初始化属性值(可以是 var 或 val )。 class Dog constructor ( val age : Int , val name : String ) { init { println ( "Dog $name is $age years old." ) } } 如果构造器有注解,或者有可见度修饰符,则 constructor 关键字是必须的,注解和修饰符放在它之前,否则 constructor 可以省略不写。 2. 创建实例 fun main ( args : Array < String >

一个小时完成numpy入门(二)

安稳与你 提交于 2020-02-05 13:59:47
numpy数组创建 下面将展示一些ndarray的构造函数 numpy.empty 这个构造函数将创造指定形状的空数组。它的构造函数如下: numpy . empty ( shape , dtype = float , order = 'C' ) shape表示创建数组的形状 dtype表述数组内元素的数据类型 Order 'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组 例1 import numpy as np a = np . empty ( [ 2 , 3 ] , dtype = int ) print ( a ) ''' 输出为 [[ 648544432 32763 648548960] [ 32763 1176174320 413]] 因为是空所以输出int型随机数 ''' numpy.zeros 该构造函数构造全为0的数组,其构造函数如下 numpy . zeros ( shape , dtype = float , order = 'C' ) 例1 import numpy as np a = np . zeros ( [ 2 , 3 ] , dtype = int ) print ( a ) ''' 输出为 [[0 0 0] [0 0 0]] ''' 例2 #也可以自定义dtype import numpy as np a = np .

C++笔记8

回眸只為那壹抹淺笑 提交于 2020-02-05 11:33:18
构造函数和析构函数什么时候被调用 ·构造函数用来初始化的,就是说存储空间已经有了。构造函数不负责盖房子,只是装修房子。 ·析构函数也不是回收者整个对象所占的存储空间,只是在这个对象被操作系统回收之前做一些善后工作。(不拆房子,比如把值钱东西搬走这样) 来源: https://www.cnblogs.com/AirBirdDD/p/12262828.html

探索MicroPython(三)--基础操作示例

狂风中的少年 提交于 2020-02-05 10:56:54
基础操作示例 1. LED 2. 按键 3. GPIO 4. 外部中断 5. I2C总线 6. ADC 7. DAC 8. UART 1. LED pyBoard中一共有4个LED,分别是是LED(1)-LED(4), LED的构造函数和调用方法如下所示: 点亮LED(4)的示例代码: from pyb import LED LED ( 4 ) . on ( ) 2. 按键 pyBoard上的按键有两个一个是复位键:RST,一个是用户使用的按键USER,MicroPython中关于按键的构造函数与调用方法为: 按键调用示例代码(按下USER点亮LED): from pyb import LED , Switch def fun1 ( ) : LED ( 4 ) . toggle ( ) sw = Switch ( ) #定义按键对象名字为sw sw . callback ( fun1 ) #当按键被按下时,执行函数fun1(),即LED(4)状态反转 回调函数的使用还可以替换为这样: from pyb import LED , Switch sw = Switch ( ) #定义按键对象名字为sw sw . callback ( lambda : LED ( 4 ) . toggle ( ) ) #当按键被按下时,LED(4)状态反转 3. GPIO

JavaScript 核心学习——继承

末鹿安然 提交于 2020-02-05 10:05:24
本篇博文讲述如何在 JavaScript 中实现继承,以及原型与原型链的知识,在附录中将会讲述 JavaScript 面向对象 的常见错误。 ##原型与原型链 在 JavaScript 中,使用类将会付出很大的代价,因此我们使用原型。原型不同于类,类代表复制。而 Javascript 使用 的是委托行为。 ###原型与原型链 JavaScript 中有一个 [[prototype]] 属性,指向对应的原型对象。在一个对象中查找一个属性,如果本对象中有此 属性,那么就会读取本对象的属性,如果本对象中没有,则会往对象的 prototype 对象去找,这个有点像原型对象版的 作用域链。举个例子: 12345678910111213141516171819202122 function (){ this.name = "parent";}Parent.prototype.sayParentName = function(){ console.log(this.name);}function Child(){ this.type = "child";}Child.prototype = new Parent(); Child.prototype.isChild = function(){ if(this.type == "child") { console.log(true); }}var

结构体和类

只谈情不闲聊 提交于 2020-02-05 08:04:21
结构是值类型,但在语法上常常当做类来处理 struct typeNum { public string a="hello"; public string b="world"; } 如果仅需要一个小的数据结构,可以考虑用结构,因为结构在性能上比类略佳。 结构不支持继承,在使用前必须先初始化结构是会影响性能的值类型,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。 正面的影响是为结构分配内存时,速度非常快,因 为它们将内联或者保存在栈中。在结构超出了作用域被删除时,速度也很快。负面影响是,只要把结构作为参数来传递或者把一个结构赋予另一一个结构如 A-B,其 中A和 B是结构),结构的所有内容就被复制,而对于类,则只复制引用。 这样就会有性能损失,根据结构的大小,性能损失也不同。 类和结构体的不同点:   1.关键字不同 一个是class,一个是struct   2.类型不同,一个是引用类型,一个是值类型(存储:一个堆区,一个栈区)。关于值类型和引用类型以及堆与栈详细可见   3.成员不同,结构体没有默认的构造函数(可以添加)和没有析构函数,不可以使用abstract,protected,sealed修饰   4.Struct变量使用完之后就自动解除内存分配,Class实例有垃圾回收机制来保证内存的回收处理   5.继承性。结构不可以继承自另一个结构或被继承

类2(构造)

こ雲淡風輕ζ 提交于 2020-02-05 05:48:35
构造函数: 每个类都定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 构造函数的名字和类名相同。和其他函数不一样的是,构造函数没有返回类型。除此之外类似于其他的函数,构造函数也有一个(可能为空的)参数列表和一个(可能为空的)函数体。类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或者参数类型上有所区别(类的其他成员函数也可以重载,规则和一般函数重载一样)。 不同与其他成员函数,构造函数不能被声明成 const 的,当我们创建类的一个 const 对象时,直到构造函数完成初始化过程,对象才能真正取得其 "常量" 属性。因此,构造函数在 const 对象的构造过程中可以向其写值。 合成的默认构造函数: 如果我们没有显示地定义构造函数,那么编译器就会隐式地定义一个默认构造函数(合成的默认构造函数)。一般情况下合成的构造函数按照如下规则初始化类的数据成员: 1.如果存在类内的初始值,用它来初始化成员 2.否则,默认初始化 合成的默认构造函数只适合非常简单的类,比如上一篇博客中的 Sales_data 类。对于一般类来说是必须要定义默认构造函数的: 1

operator介绍

社会主义新天地 提交于 2020-02-05 05:47:09
operator是C++的关键字,它和运算符一起使用,表示一 个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。 一、为什么使用操作符重载? 对于系统的所有操作符,一般情况下,只支持 基本数据类型和标准库中提供的class,对于用户自己定义的class,如果想支持基本操作,比如比较大小,判断是否相等, 等等,则需要用户自己来定义关于这个操作符的具体实现。比如,判断两个人是否一样大,我们默认的规则是按照其年龄来比较,所以,在设计person 这个class的时候,我们需要考虑操作符==,而且,根据刚才的分析,比较的依据应该是age。那么为什么叫重载呢?这是因为,在编译器实现的时候,已经为我们提供了这个操作符的基本数据类型实现版本,但是现在他的操作数变成了用户定义的数据类型class,所以,需要用户自己来提供该参数版本的实现。 二、如何声明一个重载的操作符? A: 操作符重载实现为类成员函数 重载的操作符在类体中被声明,声明方式如同普通成员函数一样, 只不过他的名字包含关键字 operator ,以及紧跟其后的一个c++预定义的操作符 。 可以用如下的方式来声明一个预定义的==操作符: class