C#学习之类

本文介绍了C#中类的概念及其使用方式,包括类的声明、对象的创建、继承及抽象类等内容。还通过示例代码展示了如何定义类、创建对象、使用构造函数等关键操作。

“类”是一种构造,通过使用该构造,您可以将其他类型的变量、方法和事件组合在一起,从而创建自己的自定义类型。 类就像一个蓝图, 它定义类型的数据和行为。 如果类没有声明为静态类,客户端代码就可以创建赋给变量的“对象”或“实例”,从而使用该类。 在对变量的所有引用都超出范围之前,该变量始终保持在内存中。 所有引用都超出范围时,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值