美文网首页
里氏替换原则 接口 抽象类型与虚方法

里氏替换原则 接口 抽象类型与虚方法

作者: 本来想取long但是有人用了 | 来源:发表于2016-12-09 21:24 被阅读0次

    1.虚方法必须有实现部分,并且为派生类提供了重写该方法的选项.

    public virtual void Say();   //错误

    2.抽象方法没有实现部分,并且抽象方法的派生是一种强迫性的.

    继承抽象类就必须实现抽象方法,这与我们virtual是不同的.

    3.抽象方法只能在抽象类中进行声明.抽象方法必须在派生类重写.

    含有抽象的方法必然是抽象类.也就是说必须强制声明为abstract,

    系统不会自动为我们添加.

    4.抽象方法必须在派生类重写,这一点和interface类似,虚方法不必.

    虚方法和抽象方法的联系:

    1.无论是虚方法或者抽象方法,重写必须使用override关键字

    抽象类:

    在程序中使用关键字abstract

    如果说正常类是一个完整的类的话,抽象类实际上是一个不完整的类.

    抽象类的特点:

    1.如果类中存在抽象方法,那么该方法不可以有实现部分.只能是方法声明.

    2.含有抽象方法的类一定是抽象类.

    3.抽象类不一定含有抽象方法.

    4.如果子类的父类为抽象类并且含有抽象方法的话,子类必须实现重写该抽象方法.

    5.virtual和abstract不能使用private修饰符,要使用public修饰符.

    6.virtual不能和abstract放在一起用.

    7.抽象类不能被实例化.

    8.抽象类可以包含静态成员.

    抽象类的作用:父类约束子类行为.

    接口:接口就是公共契约.

    接口的关键字:interface

    接口和类属于同级关系,都属于c#中的编程单位.

    接口也被称作纯洁的抽象类

    接口特点:

    1.不能有字段

    2.接口内不能有修饰符

    3.接口中不能有方法体(方法实现)

    4.接口同样不可以被直接实例化

    5.接口里面成员总是公共的

    6.接口中可以有属性,但是不能有修饰符

    7.接口中可以有索引器/事件声明

    8.接口中声明的方法,子类实现的时候虽然也用override关键字,但是记住不属于重写.这里不能把

    override显示的声明出来.

    开发准则:尽量多用接口.

    能用接口的不用抽象类,能用抽象类不用虚方法.

    动态多态性.

    LSP:

    *原则上来讲子类对象介意赋给父类对象,也可以说子类替换父类,并且出在父类能够出现

    的任何地方.

    反过来说,父类对象是不能替换子类对象的,这种特性称为李氏替换原则:

    1.子类可以隐式的转换为父类

    2.父类必须强转子类

    is && as

    is :相当于判断. A is B A是不是B或者A是不是B的子类?

    as :先判断,在转换.

    (它比传统的强制装换要相对来说安全一点,因为传统的强制转换

    *一旦转换失败的话程序就崩溃了.那使用as关键字可以保证,程序一样执行,只不过

    *转换不成功,就赋一个空类型.)

    ����xy�%�

    相关文章

      网友评论

          本文标题:里氏替换原则 接口 抽象类型与虚方法

          本文链接:https://www.haomeiwen.com/subject/jkdymttx.html