C#类,对象,类成员简介
本节内容
1.类(class)是现实世界事物的模型
2.类与对象的关系,什么时候叫“对象”什么时候叫“实例”
3.引用变量与实例的关系
4.类的三大成员:
①属性(Property);
②方法(Method);
③事件(Event)
5.类的静态成员与实例成员
①关于“绑定”(Binding)
1、类(class)是现实世界事物的模型
类是对现实世界事物进行抽象所得到的结果类包括“物质”(实体)与“运动”(逻辑)建模是一个去伪存真、由表及里的过程
2、类与对象的关系
①对象也叫实例,是类经过“实例化”后得到的内存中的实体
对象和实例是一回事:“Formallly “instance”is synonymous with “object”。“飞机”与“一架飞机”有何区别?天上有(一架)飞机——必需是实例飞,概念是不能飞的。有些类是不能实例化的,比如“数学”(Math class),我们不能说“一个数学”
②依照类,我们可以创建对象,这就是“实例化”现实世界中常称“对象”,程序世界中常称“实例”二者并无太大区别,常常混用,初学者不必迷惑
③使用new操作符创建类的实例:new Form();这叫创建实例
3、引用变量与实例的关系:如Form类:Form myForm;这样就声明了一个引用变量
myForm=new Form();该语句就是把new出来的实例交给myForm这个引用变量,用引用变量调用新建的这个实例,更方便的对实例的方法属性等进行访问。
孩子与气球:
形象的比喻:孩子相当于引用变量,气球相当于new出来的实例,
Form myForm=new Form();
该语句相当于让一个孩子牵住了一个气球。
有三种状态:
*气球不一定有孩子牵着:即new Form();没人牵着气球就飞走了,实际上在内存当中,内存垃圾收集器很快就把这个对象收回去了,把相应内存释放掉。
*有小朋友没有牵着气球:Form myForm;
*多个孩子可以牵着同一个气球:
Form myForm1;
Form myForm2;
myForm1=new Form();
myForm2=myForm1;
也可以通过同一根绳子牵着气球.
4、类的三大成员
①属性(Property)
存储数据,组合起来表示类或对象当前的状态
②方法(Method)
有C语言中的函数(function)进化而来,表示类或对象“能做什么”
工作中90%的时间是在与方法打交道,因为它是“真正做事”、“构成逻辑”的成员
③事件(Event)
类或对象通知其他类或对象的机制,为C#独有(Java通过其他方法实现这个机制)
善用事件机制非常重要(滥用事件可能搞项目搞砸)
④使用MSDN文档
某些特殊类或对象在成员方面侧重点不同
模型类或对象重在属性:如Entity Framework
工具类或对象重在方法:如Math,Console
通知类或对象重在事件:如各种Timer
5、静态成员与实例成员
静态(static)成员在语义上表示它是“类的成员”,实例(非静态)成员在语义上表示它是“对象的成员”。
①绑定(Binding)指的是编译器如何把一个成员或对象关联起来:
分为早绑定和晚绑定:
早绑定指的是编译器在编译这个类的时候就已经知道这个成员到底隶属于这个类呢还是这个类的对象;
晚绑定指的是编译器不管这个事情,直到程序运行之后才决定一个方法(成员)是属于某个类呢,还是这个类的对象。
有晚绑定功能的语言一般叫做动态语言,典型的有JavaScripts.
*不可小觑的“.”操作符——成员访问
C#类,对象,类成员简介的更多相关文章
- 如何导出标准模板库(STL)类的实例化和包含STL类对象数据成员的类
本文翻译自 https://support.microsoft.com/zh-cn/help/168958/how-to-export-an-instantiation-of-a-standard-t ...
- java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。
//------------------------------------------------我是代码的分割线 // 首选是一个工具类,在该工具类里面,定义了一个方法,public void s ...
- C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数
C++ 类成员函数 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义. 需要强调一点,在 :: 运算符之前必须使用类名.调用成员函数是在对象上使用点运算符(.),这样它就能操作与 ...
- 反射与类对象获取-Java学习
类对象 类对象指的是一个类在jvm中加载后所形成的对象,每一个类都只有一个类对象,该类对象被所有的实例对象所共享. 类之间有不同的方法,不同的属性.类对象,就是用于描述这种类,都有什么属性,什么方法的 ...
- OC 类对象和类加载
//------------------------Persion类----------------------------// 1 #import "Person.h" @imp ...
- JAVA反射机制教程-获取类对象
1. 什么是类对象 类对象,就是用于描述这种类,都有什么属性,什么方法的 2. 获取类对象 获取类对象有3种方式(1). Class.forName(2). Hero.class(3). new He ...
- 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
- Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理
上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...
随机推荐
- pyenv的安装和简单使用
centos7.4 python2.7 安装pyenv需要的依赖 yum -y install gcc zlib-devel bzip2-devel openssl-devel ncurses-d ...
- 浅谈HDFS(二)之NameNode与SecondaryNameNode
NN与2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 假设存储在NameNode节点的硬盘中,因为经常需要随机访问和响应客户请求,必然效率太低,所以是存储在内存中的 但是,如果存储在 ...
- vuex(vue状态管理)
vuex(vue状态管理) 1.先安装vuex npm install vuex --save 2.在项目的src目录下创建store目录,并且新建index.js文件,然后创建vuex实例,引入 ...
- gcc编译命令总结
一步到位编译:gcc hello.c -o hello 预处理 -E (.i) 编译 -S (.s) 汇编-c (.o) 连接-o 预处理 gcc -E hello.c -o hello.i -E:仅 ...
- ajax技术实现登录判断用户名是否重复以及利用xml实现二级下拉框联动,还有从数据库中获得
今天学了ajax技术,特地在此写下来作为复习. 一.什么是ajax? 客户端(特指PC浏览器)与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术 即,AJAX是一个[局部刷新 ...
- 利用Python与selenium自动化模拟登陆12306官网!
近年来,12306的反爬越来越来严重,从一年前的 获取tk参数后到现在增加了 JS.CSS等加密方式! 目前大部分人利用的登陆方式都是利用selenium ,此文也不例外. 环境: Wi ...
- yii中缓存(cache)详解 - 彼岸あ年華ツ
缓存是用于提升网站性能的一种即简单又有效的途径.通过存储相对静态的数据至缓存以备所需,我们可以省去生成 这些数据的时间.在 Yii 中使用缓存主要包括配置和访问缓存组件 . 内部方法 一.缓存配置: ...
- 手把手教你如何在Windows下allure与jenkins的集成生成让你一见钟情的测试报告 - 03(非常详细,非常实用)
简介 好了,国庆假期结束,开始搬砖.为什么要把allure和jenkins集成了?原因是集成以后,我们就可以直接查看allure的结果,不需要重复输入命令.重复使用浏览器打开文件来查看allure的结 ...
- 如何决定使用 HashMap 还是 TreeMap?
问:如何决定使用 HashMap 还是 TreeMap? 介绍 TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照 ...
- # Ubuntu16.04安装nvidia驱动+CUDA+cuDNN
Ubuntu16.04安装nvidia驱动+CUDA+cuDNN 准备工作 1.查看GPU是否支持CUDA lspci | grep -i nvidia 2.查看Linux版本 uname -m &a ...