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

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�%�

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 4,930评论 0 5
  • 你很清楚的知道什么时候用抽象类,什么时候用接口么?p.s. 多文字预警! 1 抽象类和接口简介 1.1 抽象类 ...
    Sharember阅读 6,906评论 9 55
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,930评论 18 399
  • 一、抽象类 1、抽象类含义的概括: 当多个类出现相同功能时,但功能主体不同,这样可以向上抽取,抽取时只抽取功能定义...
    玉圣阅读 4,262评论 0 6
  • 明天就是我们祖国的生日了,因为和中秋连在了一起,这次的假期长达8天,我们照旧准备回吴川过节。今天一早婆婆就...
    育心茵可妈阅读 1,280评论 2 2