首页  >  文章  >  后端开发  >  C#学习日记13---类(Class)的声明与定义

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

黄舟
黄舟原创
2017-01-20 13:51:401536浏览

 类作为面向对象的灵魂,在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)!


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn