成员变量

C#属性和成员变量的区别?

北城余情 提交于 2020-03-22 19:07:15
一个类,有时候搞不清楚到底用成员变量还是属性。 如: 成员变量 public string Name; 或者用属性 private string name public string Name { get { return name; } set { name = value; } } 属性与成员变量类似,它们都提供数据存储,但属性的功能远比成员变量强大。属性由特殊方法(Get 和 Set 访问器)访问。Get 和 Set 访问器允许在设置或检索属性之后验证属性值、执行其他代码或执行其他任务 例如 成员变量这样写 public readonly string Name; 那还是可以是只读了 private string name public string Name { get { return name; } } 面向对象的编程方法是要抽象、封装;在类中,定义的变量是正对类本身而言,我们把它们叫做域。它可以为public ,private等;属性是针对外部看到的类的特性,是类展示给外部使用者的特性。前面我们讲到了域可以为public,但这样把域申明为public将 不利于类的封装,因为外部使用者可以对类进行直接修改。所以我们就可以用到属性,我们只是公开它们的属性,至于如何对其进行赋值(set)如何进行取值 (get)都已经进行了封装,对于类外部是不可见的

成员变量与局部变量

狂风中的少年 提交于 2020-03-21 21:51:57
成员变量与局部变量 成员变量:在类体中定义的变量为成员变量,作用范围(scope)是整个类,只要在这个类中都可以访问到它。 局部变量:在一个方法或方法中的代码块(code block)中定义的变量。局部变量是在方法或代码块被执行的时候被创建,在方法或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值,否则出现编译错误。 如下程序综合了变量的应用: package com.liaojianya.chapter1; /** * This program demonstrates the difference between local variables and member variables * @author LIAO JIANYA * */ public class TestLocalVar4_5 { public static void main(String[] args) { int outer = 1; { int inner = 2; System.out.println("inner = " + inner); System.out.println("outer = " + outer); } // System.out.println("inner = " + inner); int inner = 3; System.out.println(

c++ union

旧街凉风 提交于 2020-03-20 18:36:59
什么是union? 翻译过来说,就是共用体,或者也叫联合体。说到了union,也就是共用体,就不得不说一下struct了,当我们有如下的struct的定义时: 1 2 3 4 5 6 struct student { char mark ; long num ; float score ; } ; 关于struct的内存结构,将就会像下图所示这样(在x86机器上演示): sizeof(struct student)的值为12bytes。但是,当我们定义如下的union时, 1 2 3 4 5 6 union test { char mark ; long num ; float score ; } ; sizeof(union test)的值为4。这为什么呢?这就是需要说的。 有的时候,我们需要几种不同类型的变量存在在同一段的内存空间中,就像上面的,我们需要将一个char类型的mark、一个long类型的num变量和一个float类型的score变量存放在同一个地址开始的内存单元中。上面的三个变量,char类型和long类型所占的内存字节数是不一样的,但是在union中,它们都是从同一个地址存放的,也就是使用的覆盖技术,这三个变量互相覆盖,而这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。上面定义的union类型的结构如下: 上面也说了,sizeof(union

成员局部变量

北城余情 提交于 2020-03-20 07:24:51
1.变量声明的位置决定变量作用域 2.变量作用域确定可在程序中按变量名访问该变量的区域 3.成员变量:定义在类中的变量(类或其他类中可以调用) 4.局部变量:定义在方法中的变量(方法) 5.区别:a.作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内部都是可见的 b.初始值不同 Java会给成员变量一个初始值 Java不会给局部变量赋予初始值 6.在同个方法中,不允许有同名局部变量 在不同方法中,可以有同名的局部变量 在同个类中,成员变量和局部变量同名时,局部变量具有更高的优先级 来源: https://www.cnblogs.com/1396493331qq/p/6887883.html

成员变量&&局部变量

血红的双手。 提交于 2020-03-20 07:20:13
一.相同点:1.都遵循变量的声明格式:(修饰符) 数据类型 变量名=初始化值       2.都有各自的作用域 二.不同点:1.声明的位置不同 成员变量:声明在类内,方法外。 局部变量:声明在方法内、方法的形参部分、代码块内 2.成员变量的修饰符有四个:public private protected 缺省 局部变量没有修饰符,硬要说有的话,与他的所在方法的修饰符相同 3.初始化值 成员变量:在声明的时候如果没有显示的赋值,各自数据类型有自己的默认初始化值    byte short int long ==>0   float double==>0.0   char==>空格    boolean==>false    引用数据类型==>null 局部变量:必须要显示的赋值,局部变量没有默认的初始化值 4.二者在内存中的存储位置不同,局部变量存储在栈空间中,成员变量存储在堆空间中。 总结: 变量的分类:按照数据数据类型分类:基本数据类型(8种),引用数据类型 按照声明的位置不同分类:成员变量 && 局部变量 局部变量在内存中的位置说明:以方法的形参局部变量为例:见下图。 来源: https://www.cnblogs.com/yunqing/p/4764515.html

java 多态成员函数(静态与非静态)、成员变量特点

眉间皱痕 提交于 2020-03-17 17:47:43
非静态成员函数:   在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有,编译失败。   在运行时期:参阅对象所属的类中是否有调用的方法。 总结: 非静态成员函数在多态调用时,编译看左边,运行看右边。 在多态中成员变量的特点:    无论编译和运行都参考左边(引用型变量所属的类)。 静态成员函数:    无论编译和运行都参考左边(引用型变量所属的类)。 来源: https://www.cnblogs.com/hongxiao2020/p/12512134.html

php学习笔记之小功能实现1

孤街浪徒 提交于 2020-03-17 17:00:31
创建一个验证码类 首先思考创建验证码的步骤: 创建文件夹名称为Vcode.class.php 创建成员变量 创建图像 设置图像边框颜色 设置像素点 设置干扰线 设置字体 释放资源 使用__toString()集成上面的方法(省去调用方法的步骤) 为了使功能更加专一,新建一个useVcode.php文件 制作form表单 判断用户传入的数据是否和设置的数据一致 一、创建成员变量 class Vcode { //成员方法 private $width ; //设置验证码宽度 private $height ; //设置验证码高度 private $image ; //设置验证码对象 private $font ; //设置字体 private $codeNum ; //设置输出的字符数 } 二、成员方法 function __construct ( $width = 100 , $height = 40 , $codeNum = 4 ) //构造方法,创建实例时自动调用,赋初值 { //开启session session_start ( ) ; //为了保存数据与用户输入的数据进行对比 $this - > width = $width ; $this - > height = $height ; $this - > codeNum = $codeNum ; } 三、绘制图像

6、说说反射的用途及实现

有些话、适合烂在心里 提交于 2020-03-16 11:45:28
一、Java反射框架主要提供以下功能: 1.在运行时判断任意一个对象所属的类; 2.在运行时构造任意一个类的对象; 3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法); 4.在运行时调用任意一个对象的方法 二、主要用途 : 1、反射最重要的用途就是开发各种通用框架。 三、基本反射功能的实现(反射相关的类一般都在java.lang.relfect包里): 1、获得Class对象 使用Class类的forName静态方法,直接获取某一个对象的class, 调用某个对象的getClass()方法 2、判断是否为某个类的实例 用instanceof关键字来判断是否为某个类的实例 3、创建实例 使用Class对象的newInstance()方法来创建Class对象对应类的实例。 先通过Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建实例。 4、获取方法 getDeclaredMethods() 5、获取构造器信息 getDeclaredMethods() getMethods() getMethod() 6、获取类的成员变量(字段)信息 getFiled: 访问公有的成员变量 getDeclaredField:所有已声明的成员变量。但不能得到其父类的成员变量

container_of宏剖析

我的未来我决定 提交于 2020-03-16 06:45:14
container_of宏剖析 //该宏位于include/linux/kernel.h 1.定义格式 /** * container_of - cast a member of a structure out to the containing structure * * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member:the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) 作用:就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针。 例: struct demo_struct { type1 member1; type2 member2; type3 member3; } struct demo_struct demo1,*pdemo; type2 *

关于面试常见问题的补充

痞子三分冷 提交于 2020-03-16 06:30:19
十八、this、super、static、final、instanceOf关键字 This:是当前类的实例,经常出现在方法和构造方法中,具体使用有以下三种情况: 1、 返回调用当前方法的对象的引用; 2、 在构造方法中调用当前类中的其他构造方法; 3、 在方法参数名和成员变量名相同时,用于区分参数名和成员变量名。 Super:this用于调用当前类的方法、属性和构造方法 ,而super调用父类的实例,super用于调用父类的方法、属性和构造方法,具体使用方法有以下两种: 1、 调用父类的构造方法; 2、 调用父类的实行和方法 Static:static关键字可以修饰方法、属性、自由块和静态块,使用static修饰这些成员时,可以理解为成员与类相关,通过 类名.成员 的形式调用;没有使用static修饰可以理解为成员与对象相关,通过 对象名.成员 的形式调用 注意: 1、 static不能用于修饰构造方法; 2、 在static修饰的方法中,不能调用没有static修饰的方法和属性,也不能使用super和this关键字; 3、 被static 修饰的属性被多个类对象共享,一个对象修改静态属性值后,会影响其他对象; 4、 静态块无论对象创建几次,静态块只执行一次; Final:用于修饰类、成员变量、成员方法 1、 final修饰的类: 该类不能被继承; 2、 final修饰的成员变量: