从特殊到一般-C#中的类
文章目录
- 类的概念
- 类的定义
- 实例
- 例子分析
- 类的成员
- 数据成员
- 属性成员
- 方法成员
- 静态成员
|
类的概念
在日常生活中,类是对具有相同特性的一类是物的抽象。比如水果是一个类,它是对苹果、梨所有具有水果特性的食物的抽象,而这个类中所包含的具体的某一个苹果,某一个梨等个体就是对象。
不同的类具有不同的特征。
如何快速理解类与对象呢?一般大家会教你类是什么,然后对象是类的实例。我今天反过来给大家解释一下。
有一天我们想吃水果,来到菜市场,菜市场就是我们的程序包含很多内容;之后我们来到水果摊前,水果摊就相当于水果这个类;告诉老板我要一个石榴,石榴就相当与对象。我们发现这就是我们日常生活中的思维方式。那么将生活运用到工作当中,运用到程序设计当中,就是我们所说的类与对象。
也就是说我们把具有相同属性或者说类似的内容,归为一类。我们对这一类进行一个描述(抽象),之后我们在使用这一类里的东西就有了一个索引(水果)。我们将一个类的实例称为类的对象(水果里边的石榴)。
还不懂私信我,主页有qq
类的定义
类的定义使用 class关键字
- 语法格式如下:
[访问修饰符] class 类名 {//类的主体 }
其中,访问修饰符可以是 public、protected、internal、private和protected internal等。class是声明类的关键词,类名是自己定义的类的名称,大括号中声明的是类的成员。其中“访问修饰符”可以省略。
- 对类的访问控制权限需要用访问修饰符来定义:
运算符 说明 public 对类的访问不受限制,就像餐厅,谁都可以进去吃饭 protected 对类的访问仅限于包含类或从包含类派生的类,就像员工餐厅,只有公司员工与子公司员工才能进去吃饭 private 访问仅限于包含类,就像私人会所,不对外开放 internal 访问仅限于当前项目,就像其他公司派到公司工作的也可以去员工餐厅吃饭。 protected internal 同时拥有protected、internal的访问权限。 类名一般使用帕斯卡命名法,即首字母大写,通常命名类采用完整的英文单词
实例
定义电话类,类中定义两个类成员,来表示电话的品牌和机型。
新建一个控制台程序,主程序修改如下:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace test {class PhoneClass{public string brand;public string type;}class Program{static void Main(string[] args){PhoneClass Phone = new PhoneClass();Phone.brand = "huawei";Phone.type = "5G";Console.WriteLine("手机品牌是:" + Phone.brand);Console.WriteLine("手机种类是:" + Phone.type);Console.ReadKey();}} }
运行结果:
例子分析
在这个程序中,代码比较简单。我么选择创建控制台应用项目程序,然后向程序中加入了一个简单的电话类。并生成了一个电话对象,并用控制台输出它。
类的成员
组成类的元素称为类的成员,类的成员主要包括描述状态的数据成员和描述操作的函数成员。函数成员提供了操作类中数据的某些功能,包括属性、方法、索引器、事件、运算符、构造函数和析构函数等。
数据成员
类的数据成员包括字段、常量和事件。字段就是在类中定义的变量,用来存储描述类的特征的值。
- 成员变量的定义语法为:
[访问修饰符] 数据类型 成员变量名
其中在声明成员变量时使用不同的访问修饰符来定义他们的访问级别,可以是public、private、protected、internal等,其含义和类的访问修饰符类似。
属性成员
属性是字段的一种自然拓展,是一个与类或对象相关联的命名。与字段不同的是,属性不表示储存位置,属性拥有访问器,访问器定义了读取或者写入属性值时必须执行的代码。通过get{}访问器和set{}访问器来实现对类中私有字段的读写操作。为了类的封装性,一般把描述类的特征的字段定义为private,把属性设为public来操作私有字段。
- 定义属性成员的语法格式如下:
[访问修饰符] 数据类型 属性名 {get{} //get访问器set{} //set访问器 }
其中属性的访问修饰符是用来指定方法的访问级别,主要的访问修饰符和数据成员的访问修饰符一样。属性方法的命名通常使用帕斯卡命名法,即首字母大写。
这里不做解答,可以看我以前写过的的博文,理解访问器。链接如下:
set()与get()详细解答(C#)https://blog.csdn.net/cashmood/article/details/100559325方法成员
方法是用来描述对象的行为的,对类的书据成员的操作都封装在类的方法中。方法的主要功能是操作数据,没有方法的程序是没有意义的,就像电话如果不具备打电话功能,那么他就不叫电话了。
- 方法的声明格式如下:
[访问修饰符] 返回值数据类型 方法名(参数列表) {//方法主体 }
- 方法的访问修饰符是用来指定方法的访问级别的
- 方法的返回值类型可以是任意一种C#类型,如果没有返回值则为void
- 方法的命名建议采用名词动词结合的组合表示
- 方法可以有参数,也可以没有参数
- 方法要具有完成一定功能的完整代码
静态成员
静态成员和类是相关联的,不依赖于特定的对象,可以作为类中共有的成员。如果类的某个方法成员声明时使用了static关键字,该成员就变成了静态成员。在类中可以定义为静态成员的有字段、方法、属性、运算符、事件和构造函数等,但不能是索引器、析构函数。静态成员可以直接使用,不必创建对象,可通过类名.静态成员方式使用静态成员。静态成员为类的所有对象所共享,非静态成员也叫做实例成员,实例成员属于具体的对象。
- 博主简介:
- 工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱:2296776525@qq.com
- 帮忙点个赞吧。哈哈。
从特殊到一般-C#中的类相关推荐
- java 枚举的继承_java中枚举类可以被继承吗?
java 枚举类 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: ● 枚举类继承了java.lang.Enum类,而不是默认的Object类.而 ...
- c语言面向对象编程中的类_C ++中的面向对象编程
c语言面向对象编程中的类 Object oriented programming, OOP for short, aims to implement real world entities like ...
- python 类中定义类_Python中的动态类定义
python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...
- Python中的类、模块和包究竟是什么?
Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...
- java中的类修饰符、成员变量修饰符、方法修饰符。
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- java中properties作用,java中Properties类的使用
java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...
- Python3中的类和实例
1.类和实例 类是抽象的模板,实例是根据类创建出来的一个个具体的"对象".例如:动物是一大类,猫.狗.鱼等都是特定的对象,即实例.python3中使用class关键字来定义类,基本 ...
- php5中魔术方法函数有哪几个,php中的类魔术方法有哪些
php中的类魔术方法有:1.__sleep,返回一个包含对象中所有应被序列化的变量名称的数组:2.__tostring,返回一个类被当作字符串时要输出的内容:3.__construct,构造方法:4. ...
- python中类和对象的内容_python中的类和对象
摘要:本文主要介绍了python中的类和对象的基础内容.由于在c++中对类和对象已经有了较为深刻的认识,所以此部分就是主要熟悉一下创建方法和使用方法. 1.类.对象的创建和简单使用 主要观察创建类的方 ...
- Javascript基础与面向对象基础~第四讲 Javascript中的类对象
今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...
最新文章
- 进入公司前与Boss的会谈话
- 11.cadence.通孔类封装创建[原创]
- PCL:关于pcd数据显示乱码
- 大蜘蛛序列号_Datacolor SpyderX 蓝蜘蛛 (红蜘蛛)校色仪 使用教程
- Unity寻路的功能总结
- 小白入门级的视频剪辑软件
- Android 蓝牙 BLE扫描、广播、连接、数据收发源码分析(2)- inquiry扫描周围设备
- Ansible学习笔记——JINJA2模板的语法及使用(template模块)
- 《科研伦理与学术规范》 (全部习题答案免费分享 )2020年
- 嵌入式linux环境取得U盘容量等信息的方法
- 《送元二使安西》 王维渭城朝雨浥轻尘,客舍清清柳色新。劝君更尽一杯酒,西出阳关无故人。英文
- 【Spring】IOC理论推导、IOC本质
- python PIL的Image.resize()和Image.thumbnail()函数的区别
- HashMap 在 JDK1.7 和 JDK1.8 中有哪些区别?
- 第三方支付系统--用户开户、信息认证以及信息修改流程
- python爬虫处理js混淆加密_Python爬虫—破解JS加密的Cookie
- 用Qt编写STM32烧录软件(ISP模式)
- 领英常见问题-领英加不了人怎么办与加好友注意哪些细节
- 渤海大潮_2020年云大潮–为什么这么多小型企业采用云
- c语言ios包的国密算法包,一种IC卡电子现金自助充值方法及其系统与流程
热门文章
- 【Hibernate】Hibernate系列6之HQL查询
- 用程序猿思维、程序设计师思维两种方式写求斐波那契数列的方法。
- 模拟 Codeforces Round #297 (Div. 2) A. Vitaliy and Pie
- 去除内存上的警告,避免程序崩掉
- android开发相关资料整理【2011-11-10】
- 如何使用三态工作流 - [MOSS 2007应用日记]
- 用jquery实现html5的placeholder功能
- bzoj2588: Spoj 10628. Count on a tree(树上第k大)(主席树)
- Ubuntu16.04安装nginx
- sh脚本学习之: sh脚本 、sed、awk