博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 图解教程 第四章 类的基本概念
阅读量:6231 次
发布时间:2019-06-22

本文共 2882 字,大约阅读时间需要 9 分钟。

类的基本概念

类的概述


类是一种活动的数据结构 

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

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

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

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

声明类


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

  • 类的名称
  • 类的成员
  • 类的特征
关键字  类名  ↓      ↓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());    }}

 

from: http://www.cnblogs.com/moonache/p/6038631.html

你可能感兴趣的文章
jQuery 插件开发全解析
查看>>
DEDE中 field:rel 是什么意思,起一个什么样的作用效果
查看>>
【图片】批量获取几万张图片
查看>>
Spring经常使用属性的注入及属性编辑器
查看>>
FreeRTOS系列第13篇---FreeRTOS内核控制
查看>>
python入门小记
查看>>
将逻辑卷降为物理分区
查看>>
CMake 入门实战【转】
查看>>
软硬件之共生之道——一千零一夜的启发
查看>>
redis 性能建议
查看>>
Android MaoZhuaWeiBo开发Service抓取个人信息-2
查看>>
Codefoces 436 B. Om Nom and Spiders
查看>>
流程控制------if else分支语句
查看>>
禁用Clusterware在系统启动后自己主动启动
查看>>
Storm编程入门API系列之Storm的Topology默认Workers、默认executors和默认tasks数目
查看>>
Json转java对象和List集合
查看>>
PHP操作MongoDB数据库具体样例介绍(增、删、改、查) (六)
查看>>
关于Unity中的模型描边与Shader切换(专题二)
查看>>
《淘宝技术这十年》读后感
查看>>
程序员经常加班的真正原因
查看>>