c#继承 里氏转化原则

继承:

  是c#中面向对象一个重要概念:

    用一个已经存在的类去定义一个新的类

      新的类叫做   子类/派生类

      已经存在的类叫做   父类/基类

  c#中所以类的最终基类都是Object类

  声明

  访问修饰符  class  派生类名:基类名{

  }

  特性:

    1.一个类只可以继承一个基类

    2.派生类拥有基类的所以属性和方法

    3.基类的成员不允许子类访问,子类是无法访问的

    4.子类会默认调用父类的默认构造函数

    

  访问修饰符

    1.protected 继承

    2. internal 本程序集(类和结构体的默认访问修饰符)

    引用其他程序集,使用using 关键字

    也可以直接通过dot语法,找到对应的命名空间. 类名

  命名空间

    同一个命名空间下的东西不能重名,可以直接调用

    不同命名空间下的类可以重名,所以 可以用命名空间来区分不同的代码

  this 和 base  

    this关键字指向自身或者自身构造函数

    base关键字指向父类的实例或者父类的构造函数

  new

     1.实例化一个对象

     2.为子类的成员申请一个新的空间

     如果子类中有成员与父类中的成员重名,可以用new关键字为子类中这个成员

      申请一个新空间,以便于计算机识别,如果不写,将默认启用new

  里氏转化原则

    1.子类可以当做父类去使用(因为子类拿到了父类的所有内容)

    2.父类变量可以装载子类,甚至可以强制转换成子类对象去使用(因为父类盒子里装的就是子类的内容)

    is :判断这个变量是否能转换成对应类型,如果可以,返回t,否则返回f

    as:尝试转换,如果能,返回转换过后的对象,如果不能,返回null

    is和as 要搭配使用,则要可以避免空引用报错

    

//如果父类对象中装的是子类,那么我们可以把它强转成子类类型,并且去使用
Prams x =  new Pramsman();//new一个子类对象放到父类类型的 x 里

if(x is Pramsman )
{
    Pramsman p1 = (x as Pramsman);
    p1.WatchMovie();
}

 

  

 

posted @ 2019-01-16 15:04  D个人笔记  阅读(720)  评论(0编辑  收藏  举报