面向对象 封装和继承

  今天,我主要学习了访问修饰符、类的封装性和继承性。

  访问修饰符主要分为4个:

  pubulc:公共的,只要引用了命名空间,就可以随意进行访问。

  private:私有的,只有当前类内部才可以访问。

  internal:内部的,当前程序集内可以访问,此修饰符是默认的。
  protected:被保护的,当前类和它的子类才可以访问。


  接下来,我学习了类的封装。

  封装主要是指将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,以特定的访问权限来使用类的成员。这个概念就是“不要告诉我你是怎么做的,只要做就可以了。”

  封装的原则是:1.把尽可能多的东西藏起来.对外提供简捷的接口。2.把所有的属性藏起来。

  可以看到通过封装使一部分成员充当类与外部的接口,而将其他的成员隐蔽起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作。

  封装的基本格式:

  private int _Ids;   - 私有的成员变量

  public int Ids - 属性,封装基本结构
  {
    get{ return _Ids; }
    set{ _Ids = value; }
  }

  注:一个成员变量可以有很多个属性;属性返回类型可以是任意类型,不是必须要与成员变量类型相同;属性可以是只读的,也可以是只写的,也可以两者都有。

  例:把学生学号进行非空限制

  private string _code;
  public string code
  {
    get { return _code; }
    set {
        if (value == "")
        {
          Console.WriteLine("学生编号不能为空!");
        }
        else
        {
          _code = value;
        }
      }
  }


  最后,我学习了类的继承。

  子类可以继承父类所有的public方法和属性;父类不可以调用子类的方法和属性,哪怕是public的;子类可以转换成父类,转换成的这个父类也可以转换回相应子类;子类转换成父类,这个父类不可以转换成其它的子类。

  继承可以使现有的代码具有可重用性和可扩展性。

  任何一个类都可以派生出一个新类,派生类也可以再派生出新类,因此,基类和派生类是相对而言的。

两类关系 

具体化

  类的层次通常反映了客观世界中某种真实的模型。在这种情况下,不难看出:基类是对若干个派生类的抽象,而派生类是基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加行为将抽象类变为某种有用的类型。

延续化

  先定义一个抽象基类,该基类中有些操作并未实现。然后定义非抽象的派生类,实现抽象基类中定义的操作。例如,虚函数就属此类情况。这时,派生类是抽象的基类的实现,即可看成是基类定义的延续。这也是派生类的一种常用方法。

派生类

  在多继承时,一个派生类有多于一个的基类,这时派生类将是所有基类行为的组合。
  派生类将其本身与基类区别开来的方法是添加数据成员和成员函数。因此,继承的机制将使得在创建新类时,只需说明新类与已有类的区别,从而大量原有的程序代码都可以复用,所以有人称类是“可复用的软件构件”。

成员调整

重定义

  如果在派生类中定义了一个函数原型与继承成员函数一模一样的成员函数,则该函数实现的函数体是对继承成员函数的重定义。
原文地址:https://www.cnblogs.com/hongsen3/p/5853675.html