C#学习日记13—类(Class)的声明与定义

 类作为面向对象的灵魂,在c#中有着相当广泛和深入的应用,对类的深度掌握自然是我们学习c#重要的一个环节.有关类的意义上一篇  c#学习日记12—引用类型 中已经给出了,这里就不再重复了.说到 类 就不得不说下与之息息相关的内容—-对象.

类与对象:

           类:  从具有相同属性的事物当中抽象出来的概念,一般用来描述同类个体的集合。

    对象: 从类当中具体化的一个个体。(比如人类就是一个类, 张三 就是人类中的一个对象)

    属性:用来描述对象特征的。   (在类里面,是类的数据成员^_^)

    方法:   说明对象具有的能力。   (在类里面,是类的数据成员^_^,在C/C++中它叫函数,以后要改口啦)

    事件:  具有触发能力的函数.        

                (与方法不同的是,事件是被动,由外部事物发出,受动者是对象; 而方法是由对象主动发出的动作,是类的数据成员)

 

类的定义:

    类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。

访问修饰符 class  类名   {        访问修饰符数据成员;   }

 

举个例子:

 public class Student      {            private string name;            private int age;     }

  访问类里面的数据成员方式与 Struct类型 一样,您要使用(.)点运算符(链接了对象的名称和成员的名称),对于访问修饰符,这里对 private、public、internal 稍微说一下(以后我会细说哒):

   private:  私有访问。只限于本类成员访问,子类,实例(对象)都不能访问 (换句话说供类自身调用)。

   public:   公有访问。不受任何限制,所有类都可访问。

   internal:  同一个程序集中的所有类均可访问,可以想象成Public 的其中一个程序集集合。

 

    如果没有指定访问修饰符,相关的访问权限就会使用默认权限,类的默认权限是 internal,  成员的默认权限是private; 所以当我们以后出现了有关访问权限问题的时候,记得看看是不是没指定访问修饰符或者使用不适当。

 

创建对象:

         也可以说是对类进行对象实例化,需要采用 new 语句。拿上面定义好的类举例子 Student  stu = new Student();  此时会调用Student类当中的 构造方法(函数,通俗的理解为初始化函数吧,以后在说构造函数与析构函数),如果没有默认将数据成员赋值为0;

下面就写个列子:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;    namespace Test  {   //定义的一个类,类名叫People      public class People      {         //全部指定为公有成员          public string name;              public char sex;                  public uint age;            }        class Program      {                   static void Main(string[] args)          {              People person = new People();        //实例化一个类,对象名叫 person              Console.WriteLine("输入姓名: ");              person.name = Console.ReadLine();   //  全部轻松访问,没有压力               Console.WriteLine("请输入性别:");              person.sex = Console.ReadKey().KeyChar;    //char 类型转换              Console.WriteLine("n请输入年龄:");              person.age = uint.Parse(Console.ReadLine());   //强制类型转换              Console.WriteLine("您的姓名是:{0}t您的性别是:{1}t您的年龄是:{2}",person.name,person.sex,person.age);            }      }  }

运行下:

498.png

 看完上面写的代码,发现 这与 Struct类型 除了名字不同外有何区别?? 在上面的程序中确实没有区别(所有成员都是Public),看下面这个:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;    namespace Test  {   //定义的一个类,类名叫People      public class People      {         //全部指定私有成员          private string name;              private char sex;                  private uint age;            //定义public 方法作用是输入与输出          public void input()          {              Console.WriteLine("输入姓名: ");              name = Console.ReadLine();                 Console.WriteLine("请输入性别:");              sex = Console.ReadKey().KeyChar;    //char 类型转换              Console.WriteLine("n请输入年龄:");              age = uint.Parse(Console.ReadLine());   //强制类型转换                    }          public void output()          {              Console.WriteLine("您的姓名是:{0}t您的性别是:{1}t您的年龄是:{2}",name, sex,age);                    }            }        class Program      {                   static void Main(string[] args)          {              People person = new People();        //实例化一个类,对象名叫 person                person.input();         //通过调用 public 方法访问privat 成员并赋值                person.output();    //此时无法使用直接使用 Console.WriteLine(person.name)输出,访问权限不够            }      }  }

    运行过于上面一模一样,在class类中我们可以定义方法,(上面的input与output是两个方法)而在Struct 结构体中不能定义方法,而且我们将People类中的属性指定为private 私有成员,外界对象person无法直接访问,只能通过People中指定的Public方法访问。举个例子吧:  当我俩打电话的时候,我俩并没有面对面的交流,而是通过 手机 这个媒介相互交换信息,此时 手机就可以看作你的一个public方法,你就是一个类中私有成员,我就是这个类实例化的一个对象。

以上就是C#学习日记13—类(Class)的声明与定义的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1431955.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 05:59:32
下一篇 2025年12月17日 05:59:49

相关推荐

发表回复

登录后才能评论
关注微信