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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HC666/article/details/48917985

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

        }
    }
}


运行下:

 

 看完上面写的代码,发现 这与 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方法,你就是一个类中私有成员,我就是这个类实例化的一个对象。

 

 

 

 

 

   关于声明与定义先简单大致的说在这儿,后面会继续深入挖掘有关类的性质,感谢您的阅读,您的建议与评论是我完善自我的无尚动力^_^……


 

 

展开阅读全文

没有更多推荐了,返回首页