C#学习笔记之八:类

1.怎么声明一个类?

先由一个完整的类定义(但并不是真实的和必须的)来看类的组成元素:
class MyClass
{
    //字段,用于存储所需要的数据,会自动初始化为0的等价表示
    private int a;
    public static string d;    //只能通过类而不是类实例来引用
    //属性,用于为私有字段的读写构造一个安全的环境
    public int A
    {
        get    //get访问器,这块可以简写为:get;(没有其他逻辑时)
        {
            return a;
        }
        set     //set访问器,value为隐式参数,这块可以简写成:set;(没有其他逻辑时)    
        {
            a = value;
        }
    }
    //索引器,用于封装类的内部集合或数组,名字只能是this
    private string[ ] x = new string[5];
    public string this[int index]
    {
        get
        {
            return x[index];
        }
        set
        {
            x[index] = value;
        }
    }
    
    //构造函数
    public MyClass()
    {
        a = 1;
    }    
    //带参数的构造函数
    public MyClass(int _param)
    {
        A = _param;
    }
    //析构函数
    ~MyClass()
    {
        //Do Something
    }
}

2.实例化一个类?

MyClass mc = new MyClass();        //a = 0;
MyClass mc = new MyClass(5);      //a = 5;

3.怎样继承?

class MySubClass : MyClass
{
    //若想重新定义与基类相同的成员,可以使用new来隐藏基类成员
    //若想访问基类的成员,可以使用base.语法来引用
    public int y;
    //指定基类构造函数
    public MySubClass(int _param1, int _param2) : base(_param1)
    {
        y = _param2;
    }
}
(1)使用sealed关键字定义的类不能被继承。
(2)暂时不看分部类,静态类,包括只能在静态类中才能使用的扩展方法。
(3)派生类型的向上转型会使得派生类中的成员变得不可见。

4.实现多态

(1)编译时多态:通过静态绑定实现,要求在同一个类中,方法名相同,方法签名不同,就是重载方法。
(2)运行时多态:通过覆写虚方法实现的,虚方法使用关键字virtual标识。
class Person
{
    public virtual void Speak()
    {
        //定义虚函数,抽象方法不能有函数体,抽象类即使用abstract标识的类
    }
}

class Male : Person
{
    public override void Speak()
    {
        //实现覆写,如果不想让这个类的派生类继续覆写该虚函数,就使用sealed关键字密封方法
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值