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(); }