3.4C#引用类型之类(Class)

1.类声明

class 类名<类型参数> : 基类 {
    //类体
}

2.继承

类只能直接继承自一个基类。但是,因为一个基类本身可能继承自另一个类,所以一个类可能会间接继承多个基类。省略基类相当于从 object 类型继承。

继承意味着类隐式包含其基类的所有成员(除了基类的静态、实例构造函数和析构函数)。

派生类可以通过 new修饰符 声明具有相同名称和签名的成员来隐藏基类成员。

public class BaseClass
{
    public void DoWork() { WorkField++; }
    public int WorkField;
    public int WorkProperty
    {
        get { return 0; }
    }
}

public class DerivedClass : BaseClass
{
    public new void DoWork() { WorkField++; }
    public new int WorkField;
    public new int WorkProperty
    {
        get { return 0; }
    }
}

3.创建对象

类型 标识符 = new 类型(实参);

4.访问成员

对象.成员

5.this

this 关键字指向当前实例。

6.抽象(abstract)类

abstract class 类名
{
    public abstract void F();
}

抽象类包含具有签名定义但没有实现的抽象方法。包含抽象方法的类必须是抽象类。

如果非抽象类是从抽象类派生的,则非抽象类必须包含所有继承的抽象成员的实际实现,从而重写这些抽象成员。

抽象类被用作一个基类。 

抽象类不能被实例化,它们只能通过实现抽象方法的派生类来使用。

7.密封(sealed)类

一个类可以通过将自身或成员声明为 来防止其他类继承自它或继承自它的任何成员sealed

sealed修饰符用于阻止从此类派生,所以密封类不能同时也是抽象类。如果将密封类指定为其他类的基类,则会发生编译时错误。

sealed修饰符主要用于防止意外派生,但它还支持某些运行时优化。特别是,由于知道密封类绝不会有任何派生类,因此可以将密封类实例上的虚函数成员调用转换为非虚拟调用。

8.静态类

static修饰符用于声明为 静态类。静态类不能被继承或实例化,所以不能用作类型并且只能包含静态成员。 

static class {
    //类体
}

9.泛型类

类型参数跟在类型名称后面。

class<类型参数>

类定义可能会按如下方式指定一组类型参数:在类名后面用尖括号括住类型参数名称列表。然后,可以在类声明的主体中使用类型参数来定义类成员。 在以下示例中,Pair 的类型参数是 TFirst 和 TSecond

public class Pair<TFirst,TSecond>
{
    public TFirst First;
    public TSecond Second;
}

使用泛型类时,必须为每个类型参数提供类型实参:

Pair<int,string> pair = new Pair<int,string> { First = 1, Second = "two" };
int i = pair.First;     // TFirst is int
string s = pair.Second; // TSecond is string

提供类型参数的泛型类型(如上文所示 Pair<int,string> )称为已构造类型

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/7867.html

发表评论

登录后才能评论