C#类

类概述

.Net平台最基本的编程结构是类类型,类是由字段数据和操作这个数据的成员构成的自定义类型;类即是将数据和相关功能的集合封装起来,以模拟现实世界中的实体

定义类

    class PersonRunning
    {
        //状态
        public string Name;   
        public int runningSpeed;   

        //功能
        public void PrintState()
        {
            Console.WriteLine("{0} is going {1} 米/秒", Name, runningSpeed);
        }
        public void SpeedUp(int delta)
        {
            runningSpeed += delta;
        }

    }

在Main()方法中使用Personrunning

       static void Main(string[] args)
        {
            //分配和设置对象
            PersonRunning currPerson = new PersonRunning();
            myCar.Name = "小明";
            myCar.runningSpeed = 2;
            //在for循环中多次调用函数,加速
            for(int i=0;i<=5;i++)
            {
                myCar.SpeedUp(1);
                myCar.PrintState();
            }
            
        }
运行结果:



使用new关键字分配对象

对象必须使用new关键字才能被分配到内存中,使用new关键字的本质是在调用构造函数,如果不用new分配就会收到编译错误;有两种写法

PersonRunning myCar = new PersonRunning();
或者:

PersonRunning currPerson;
myCar = new PersonRunning();
第二种写法:第一句只是声明了指向尚未被创建的currPerson对象的一个引用而已,在通过new关键字将引用赋给对象之后,这个引用才会指向内存中的有效实例

构造函数

构造函数是用构造类对象的初始状态的,即创建对象的时候创建其状态,它是类的特殊方法,构造函数永远不会有返回值,并且它的名字与类名相同

默认构造函数

C#类都可提了默认的构造函数,默认的构造函数不接受参数,默认的构造函数确保所有的数据字段都设置了正确的默认值

现在我们给runningPerson类,添加一个方法,用来输出字段的值

 public void Display()
        {
            Console.WriteLine("Name值:{0}
runningSpeed值:{1}", Name, runningSpeed);
        }
当我们实例化一个具体对象后,立即调用这个方法

//分配和设置对象
            PersonRunning currPerson;
            currPerson = new PersonRunning();
            //调用默认构造函数,输出默认值
            currPerson.Display();

输出如下:



这说明,用默认构造函数构建的对象,其数据成员都取得了相关类型的默认值,比如int类默认值0.

修改默认构造函数

public PersonRunning()
        {
            Name = "小王";
            runningSpeed = 3;
        }
这样,所有的PersonRunning类的对象都会取得“小王” 和“ 3 ” 的默认值,而不是数据类型的默认值


自定义构造函数

类可以有多个构造函数

        //自定义构造函数
        public PersonRunning(string currName)
        {
            Name = currName;
        }
        public PersonRunning(string currName,int currRunningSpeed)
        {
            Name = currName;
            runningSpeed = currRunningSpeed;
        }

调用自定义构造函数

PersonRunning currPerson = new PersonRunning("Jack");
在这个构造函数中,我们只给Name字段成员赋值了,所以输出如下


PersonRunning currPerson = new PersonRunning("Jack",3);
在上面的构造函数中,我们给两个字段成员 都赋值了


需要注意的,函数的参数和参数的类型,共同决定了一个函数签名

另外,一旦当我们自定义了构造函数,默认的构造函数就会被自动从类中移除,不再有效,如果此时用默认构造函数来构建对象,VS会给出错误提示


怎么样才能继续使用默认的构造函数?方法很简单,在代码中显式声明默认构造函数,唯一要注意的是默认构造函数的 成员为空;对于本例 可以这样写:

public PersonRunning()
        {

        }
还有一个简单的方法生成默认构造函数,那就是在代码中键入 :" ctor " 然后按2次 Tab,VS会自动生成默认构造函数


原文地址:https://www.cnblogs.com/tao-zi/p/3832575.html