类的基本概念
类的概述
声明类
类成员
字段
方法
创建变量和类的实例
为数据分配内存
实例成员
访问修饰符
私有访问和公用访问
从类的内部访问成员
从类的外部访问成员
综合应用

类的基本概念

类的概述


类是一种活动的数据结构
在面向对象分析和设计产生前,程序员仅把程序当做指令的序列。那时的焦点在指令的组合和优化上。
随着面向对象的出现,焦点转移到组织程序的数据和功能上。
程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类。

类是一个能存储数据并执行代码的数据结构。包含数据成员和函数成员。

  • 数据成员:存储与类或类的实例相关的数据。数据成员通常模拟现实世界事物的特性
  • 函数成员:执行代码。通常模拟现实世界事物的功能和操作

类是逻辑相关的数据和函数的封装,通常代表真实世界中或概念上的事物。

声明类


类的声明定义新类的特征和成员。它并不创建类的实例,但创建了用于创建实例的模板。

  • 类的名称
  • 类的成员
  • 类的特征
关键字  类名↓      ↓
class MyExcellentClass
{成员声明
}

类成员

字段和方法是最重要的类成员类型。
字段是数据成员,方法是函数成员。

字段

字段隶属于类的变量

  • 它可以是任何类型,无论预定义类型还是用户定义类型
  • 和所有变量一样,字段用于保存数据
    • 可以被写入
    • 可以被读取
class MyClass
{类型   字段名称↓     ↓int MyField
}

方法

方法是具有名称的可执行代码块。

方法声明包括以下组成部分

  • 返回类型
  • 名称
  • 参数列表
  • 方法体
class SimpleClass
{返回类型      参数列表↓           ↓void PrintNums(){Console.WriteLine("1");}
}

创建变量和类的实例


类的声明只用于创建类的实例的模板。一旦类被声明,就可以创建类的实例。

  • 类是引用类型,这意味着它们要为数据引用和实际数据都申请内存
  • 数据的引用保存在一个类类型的变量中。所以,要创建类的实例,需要从声明一个类类型的变量开始。如果变量没有被初始化,它的值是未定义的

为数据分配内存


声明类类型的变量所分配的内存是用来保存引用的,而不是类对象实际数据。
要为实际数据分配内存,需要使用new运算符。

  • new运算符为任意指定类型的实例分配并初始化内存。它依据类型的不同从栈或堆里分配
  • 使用new运算符组成一个对象创建表达式
    • 关键字 new
    • 要分配内存的实例的类型名称
    • 成对的圆括号,可能包括参数或无参数
  • 如果内存分配给一个引用类型,则对象创建表达式返回一个引用,指向在堆中被分配并初始化的对象实例
Dealer theDealer;    //声明引用变量
theDealer = new Dealer();//为类对象分配内存并赋给变量

实例成员


类声明相当于模板,通过这个模板想创建多少个类的实例都可以。

  • 实例成员:类的每个实例都是不同的实体,它们有自己的一组数据成员,不同于同一类的其他实例。因为这些数据成员都和类的实例相关,所以被称为实例成员
  • 静态成员:静态成员是与类相关的成员,静态成员被加载到静态存储区,且只被创建一次,类的所有实例共享静态成员

访问修饰符


类的内部,成员间可以任意访问。
访问修饰符,指明外部程序如何访问类中的成员。

字段访问修饰符 类型 标识符;
方法访问修饰符 返回类型 方法名(){...}

五种访问修饰符

  • 私有的(private)
  • 公有的(public)
  • 受保护的(protected)
  • 内部的(internal)
  • 受保护内部的(protected internal)
私有访问和公用访问
  • 私有访问是默认的访问级别
  • 实例的公有成员可以被程序中的其他对象访问

class C1
{int F1;            //隐式私有字段private int F2;    //显示私有字段public int F3;     //公有字段void DoCalc()      //隐式私有方法
    {...}public int GetVal()//公用方法
    {...}
}

从类的内部访问成员


类的成员仅用其他类成员的名称就可以访问它们

class DaysTemp
{//字段private int High = 75;private int Low = 45;//方法private int GetHigh(){return High;}private int GetLow(){return Low;}public float Average(){return (GetHigh()+GetLow())/2;//访问私有方法}

从类的外部访问成员


要从类的外部访问实例成员,必须包括变量名称和成员名称,中间用.(dot-syntax notation 点运算符)分隔。

DaysTemp myDt = new DaysTemp();  //创建类的对象
float fValue = myDt.Average();   //从外部访问

综合应用


下面代码创建两个实例并把它们的引用保存在名称为t1和t2的变量中。
这段代码示范了目前位置讨论的使用类的3种行为

  • 声明一个类
  • 创建类的实例
  • 访问类的成员(写入字段、读取字段)
class DaysTemp            //声明类
{public int High,Low;  //声明实例字段public int Average()  //声明实例方法
    {return(High+Low)/2;}
}
class Program
{static void Main(){//创建两个实例DaysTemp t1 = new DaysTemp();DaysTemp t2 = new DaysTemp();//给字段赋值t1.High = 76;t1.Low = 57;t2.High = 75;t2.Low = 53;//读取字段值//调用实例方法Console.WriteLine("t1:{0},{1},{2}",t1.High,t1.Low,t1.Average());Console.WriteLine("t2:{0},{1},{2}",t2.High,t2.Low,t2.Average());}
}

转载于:https://www.cnblogs.com/moonache/p/6038631.html

C# 图解教程 第四章 类的基本概念相关推荐

  1. C#图解教程 第七章 类和继承

    类和继承 类继承 访问继承的成员 所有类都派生自object类 屏蔽基类的成员 基类访问 使用基类的引用 虚方法和覆写方法 覆写标记为override的方法 覆盖其他成员类型 构造函数的执行 构造函数 ...

  2. C#图解教程(第三章)

    C#图解教程第三章 3.1 C#程序是一组类型声明 3.2 类型是一种模板 3.3 实例化类型 3.4 数据成员和函数成员 3.5预定义类型 3.6用户定义类型 3.7 栈和堆 3.7.1 栈 3.7 ...

  3. matlab图形绘制经典案例,MATLAB经典教程第四章_图形绘制.ppt

    <MATLAB经典教程第四章_图形绘制.ppt>由会员分享,可在线阅读,更多相关<MATLAB经典教程第四章_图形绘制.ppt(32页珍藏版)>请在人人文库网上搜索. 1.Ma ...

  4. Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25

    Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...

  5. python核心教程_python核心教程--第四章

    第四章讲的是python对象. 4.1 python对象 所有的python对象都拥有三个特性:身份,类型和值 身份: 每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得 ...

  6. python编程案例教程第四章_Python编程入门-第四章 流程控制 -学习笔记

    第四章 流程控制 一.布尔逻辑 *在Python中,用True和False表示真值.一般使用4个主要的逻辑运算符来组合形成布尔值:not\and\or\==. 如: False==False #Tru ...

  7. 计算化学系列教程-第四章-一维谐振子

    第四章-一维谐振子 本次有3节课程,分别为: 4.1 一维谐振子 https://v.qq.com/x/page/a0902106f9h.html?ptag=qqbrowser 4.2 原子的振动 h ...

  8. Python程序设计与算法基础教程第四章上机题

    第四章来了 1.杨辉三角,很简单 print("1".center(20)) print("1 1".center(20)) print("1 2 1 ...

  9. 《算法图解》——第四章 快速排序

    第四章   快速排序 1    分而治之(divided and conquer,D&C) 第一个

最新文章

  1. 使用MASM02 - Win32汇编语言010
  2. 架构为什么要以领域为核心
  3. 常见问题及解决方案(前端篇)
  4. android 通知栏样式_Android通知样式
  5. 现代控制理论概念梳理(脑图)
  6. InDesign 教程,如何创建沉浸式文档?
  7. java连接数据库实现基本的增删改查
  8. Ubuntu系统未发现vim命令
  9. Flink中的Window计算-增量计算全量计算
  10. UINO优锘:深度|扒一扒图化资源申请之三生三世那点事儿
  11. 英特尔芯片组 年代表_英特尔:对不起,但我们的7纳米芯片将延迟到2022年,2023年
  12. R语言---Seewave包和tuneR在声音分析中的应用①关于声音及简单分析
  13. win10 cortana 没反应解决方法
  14. [Android Pro] proguard.cfg 配置文件
  15. 【研讨会现场】广州天嵌科技受邀参加2014年TI9月深圳研讨会
  16. 体育学校有没有计算机专业,职高有体育专业吗
  17. Git必学的merge和rebase区别
  18. cmd 添加端口映射
  19. 专业技术计算机应用能力考试ppt2007,全国专业技术人员计算机应用能力考试系列教材——PowerPoint 2003中文演示文稿...
  20. 修改Colibri主题的页尾copyright信息——webpack建站小技巧(一)

热门文章

  1. 迷失第一季/全集Lost 1迅雷下载
  2. signalr中Group 分组群发消息的简单使用
  3. git提交远程报错[rejected] master - master (fetch first)
  4. [bzoj1009](HNOI2008)GT考试 (kmp+矩阵快速幂加速递推)
  5. 新浪sae平台进行数据库的连接
  6. 社交网站 分享 +button
  7. 重用之前应仔细分析问题---------用错轮子有感
  8. python中提取pdf文件某些页_付费?是不可能的!处理 PDF 只需几行代码,彻底解放双手!...
  9. cesium 局部加载_cesium自定义气泡窗口infoWindow后续优化篇 - GIS之家
  10. imx6 配置串口波特率_stm32异步串口(uart)通讯基本操作