C#学习之类

来源:互联网 发布:知乎怎么刷新 编辑:程序博客网 时间:2024/06/01 10:59

“类”是一种构造,通过使用该构造,您可以将其他类型的变量、方法和事件组合在一起,从而创建自己的自定义类型。 类就像一个蓝图, 它定义类型的数据和行为。 如果类没有声明为静态类,客户端代码就可以创建赋给变量的“对象”或“实例”,从而使用该类。 在对变量的所有引用都超出范围之前,该变量始终保持在内存中。 所有引用都超出范围时,CLR 将标记该变量以供垃圾回收。 如果类声明为静态类,则内存中只存在一个副本,并且客户端代码只能通过该类自身而不是“实例变量”访问该类。

与结构不同,类支持“继承”,而继承是面向对象编程的基础特性。

声明类

类使用 class 关键字进行声明,如下面的示例所示:

C#public class Customer{    //Fields, properties, methods and events go here...}

class 关键字前面是访问级别。 由于在该例中使用 public,因此任何人都可以基于该类创建对象。 类的名称位于 class 关键字的后面。 定义的其余部分是类的主体,用于定义行为和数据。 类的字段、属性、方法和事件统称为“类成员”。

创建对象

尽管有时类和对象可互换,但它们是不同的概念。 类定义对象的类型,但它不是对象本身。 对象是基于类的具体实体,有时称为类的实例。
通过使用 new 关键字,并在后面跟随类的名称,可以创建基于该类的对象,如下所示:

C#Customer object1 = new Customer();

创建类的实例后,将向程序员传递回对该对象的引用。 在前面的示例中,object1 是对基于 Customer 的对象的引用。 此引用引用新对象,但不包含对象数据本身。 实际上,可以在根本不创建对象的情况下创建对象引用:

C#Customer object2;

建议不要创建像这样的不引用对象的对象引用,因为在运行时通过这样的引用来访问对象的尝试将会失败。 但是,可以创建这样的引用来引用对象,方法是创建新对象,或者将它分配给现有的对象,如下所示:

C#Customer object3 = new Customer();Customer object4 = object3;

此代码创建了两个对象引用,它们引用同一个对象。 因此,通过 object3 对对象所做的任何更改都将反映在随后使用的 object4 中。 由于基于类的对象是按引用来引用的,因此类称为引用类型。

类继承

继承是通过使用“派生”来实现的,而派生意味着类是使用“基类”声明的,它的数据和行为从基类继承。 通过在派生的类名后面追加冒号和基类名称,可以指定基类,如下所示:

C#public class Manager : Employee{    // Employee fields, properties, methods and events are inherited    // New Manager fields, properties, methods and events go here...}

当类声明基类时,它继承基类除构造函数以外的所有成员。

与 C++ 不同,C# 中的类只能直接从一个基类继承。 但是,因为基类自身也可能继承自另一个类,所以类可以间接继承多个基类。 而且,一个类可以直接实现一个以上的接口。

类可以声明为抽象类。 抽象类包含具有签名定义但没有实现的抽象方法。 抽象类不能进行实例化。 只能通过实现抽象方法的派生类使用抽象类。 相比之下,密封类不允许其他类从其派生。

类定义可在不同的源文件之间进行拆分。

描述

下面的示例中定义了一个公共类,其中包含一个字段、一个方法和一个称为构造函数的特殊方法。 然后使用 new 关键字将该类实例化。

示例

C#public class Person{    // Field    public string name;    // Constructor that takes no arguments.    public Person()    {        name = "unknown";    }    // Constructor that takes one argument.    public Person(string nm)    {        name = nm;    }    // Method    public void SetName(string newName)    {        name = newName;    }}class TestPerson{    static void Main()    {        // Call the constructor that has no parameters.        Person person1 = new Person();        Console.WriteLine(person1.name);        person1.SetName("John Smith");        Console.WriteLine(person1.name);        // Call the constructor that has one parameter.        Person person2 = new Person("Sarah Jones");        Console.WriteLine(person2.name);        // Keep the console window open in debug mode.        Console.WriteLine("Press any key to exit.");        Console.ReadKey();    }}// Output:// unknown// John Smith// Sarah Jones
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 认床导致睡不着怎么办 碰到打呼噜的人怎么办 打呼吵得睡不着怎么办 打呼太吵睡不着怎么办 睡觉时舍友说话怎么办 夜晚醒了睡不着怎么办 夜晚怕黑睡不着怎么办 宝宝不愿意盖被子怎么办 白天睡觉晚上睡不着怎么办 晚上睡觉不安神怎么办 晚上经常睡不着觉怎么办 老是睡不着觉怎么办啊 小孩睡觉不安稳怎么办 睡觉时动不了怎么办 特别累还睡不着怎么办 又累又睡不着怎么办 干活累的睡不着怎么办 狗一有动静就叫怎么办 楼上天天闹动静怎么办 喝了奶茶失眠怎么办 失眠一宿第二天怎么办 睡觉外面噪音大怎么办 怀孕早期晚上睡不着怎么办 短发发尾翘怎么办 很累就是睡不着怎么办 人累但是睡不着怎么办 如果晚上睡不着该怎么办 晚上睡不着觉该怎么办 晚上睡不着该怎么办呢 晚上失眠睡不着该怎么办 晚上一直睡不着该怎么办 怀孕晚上睡不着该怎么办 运动太累睡不着怎么办 运动完睡不着觉怎么办 晚上冷得睡不着怎么办 晚上脚冷睡不着怎么办 短发头发有点乱怎么办 不想让别人睡觉怎么办 15岁晚上睡不着怎么办 16岁青少年失眠怎么办 好累又睡不着怎么办