C#封装和继承

在C#中对类进行封装是常见的,而封装指的是类内部的数据隐藏起来,不让对象实例直接对其进行操作。封装可以通过public、private、protected和internal等关键字来实现。那如果不把字段定义封装起来,使它为公共类型时,外部对象可以对类内部的数据进行任意的操作,就有可能导致当前值不符合系统的业务逻辑。

在以下代码,Person的_age属性没有引起编译错误,但是是不符合业务逻辑的,因为人的年龄不可能为负值,这是不把类的字段封装起来,导致部对象可以对类内部的数据进行任意的操作,而发生的问题

 class Program

    {

        static void Main(string[] args)

        {

            Person person = new Person();

            person._name = "MJ";

            person._age = -1;

        }

    }

    

}

class Person

{

    public string _name;

    public int _age;

}

利用封装,就可以有效的对外部隐藏内部的数据,不能使外部直接操作内部数据,从而避免了数据损坏,也可以加入一些逻辑判断,使得数据完整。如果在操作不符合逻辑时,会捕获一个异常会进行相关的处理操作

class Person

{

    private string _name;

    private int _age;

    

    public string Name

    {

        get { return _name; }

        set { _name = value; }

    }

    public int Age

    {

        get { return _age; }

        set

        {

                if (value < 0 || value > 130)

                {

                    throw (new ArgumentOutOfRangeException("Age", value, "年龄须在0-130以内"));

                    _age = value;

                }

            

        }

    }

}

类与类之间也可进行继承,C#仅支持派生于一个基类,也能够继承多个接口。在子类继承父类时,子类可以继承父类中的属性,但并不能对父类的私有成员进行直接访问,子类可以通过调用公有或保护方法来间接的对私有成员进行访问。但是密封类是不可以被另一个类继承的,强行继承就会报出错误

 

使用了继承之后,当初始化一个子类时,除了会调用子类的构造函数外,同时也会调用基类的构造函数。子类的初始化顺序为:

子类的静态字段

子类的静态构造方法

子类的实例字段

父类的静态字段

父类的静态构造方法

父类的实例字段

父类的实例构造方法

子类的实例构造方法

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值