关于类,这些老朋友你还记得吗

如果说程序是对现实世界的模拟,那么类就是对现实世界中元素的总结、概括。

在编程中,对象就是元素,它是一个自包含的实体,用一组可识别的特性和行为来标识,而类就是具有相同的属性和功能的对象的抽象的集合,用 class 表示。类写好后得用啊,怎样用呢,就是把这个类真实化,真实完后就变成了实例,这个过程叫实例化,就是创建对象的过程,用 new 关键字创建。

好比是现实世界中我们都对“龙”有概念,它的特征、作用……我们都知道的妥妥的,但没有找到它生存的证据证明它的存在,所以它只活在了人们的认知中,现实中它是不存在的。——因为这个类没有实例化,虽然把类写好了,但不能用啊。由此可见实例化的重要性。

这个 new 很有讲究啊,在你对类进行 new 的时候就对类进行了初始化,也就是调用了构造方法(又叫构造函数),new 后面的 类名()就是构造方法。所有类都有构造方法,如果不编码则系统默认生成空的构造方法,若定义了构造方法,那么默认的构造方法就会失效。——不要问为什么,这是规定。看它是不是和虚方法类似啊。

那么什么是构造方法长什么样,别急,一看你就明白了

class Cat
{
    private string name="";
    public Cat(string name)
    {
        this.name=name;
    }
}

这就是一个构造方法,只不过对它进行了一下编码,通过构造方法给Cat这个类添加了个字符串参数,将参赋值给私有变量name从而使类带上了名字。

当然,如果不想给类名字又想生成类怎么办,那就需要重载了——方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。方法名必须相同,但参数类型或个数必须不同,否则重载就没意义了。定义清楚了,那么根据定义不难想到重载的作用吧,没错,那就是函数具备了扩展能力。

比如本例将构造方法重载

class Cat
{
    private string name="";
    public Cat(string name)
    {
        this.name=name;
    }

    //将构造方法重载
    public Cat()
    {
        this.name="无名";
    }
}

看完了构造方法,有没有觉得它和谁有点像呢

private int shoutNum=3;
public int ShoutNum
{
    get{return shoutNum;}
    set{shoutNum=value;}
}

像吧!有时甚至分不清。我来告诉你,后者叫字段和属性,虽然它和构造方法经常出现在类里,但字段属性是成组出现的,这是你自己写的类里边的一个内部字段,并为其属性授予读写权限;而构造方法是你将类名拿过来对类进行的类的修改。注意:两者作用的角度是不一样的,都没有弄混的必要。

至于为什么用这些,这样有什么好处,实践出真知,在写代码的过程中去探索吧。区别会一目了然的。

猜你喜欢

转载自blog.csdn.net/qq_41026669/article/details/89639564
今日推荐