什么是接口
- 接口是一种规范,约定好遵守某种规范就可以写通用的代码
- 定义了一组具有各种功能的方法(只是一种能力,没有具体的实现)
- 接口的意义: 实现多态
接口定义
- 接口不能实例化。接口不能有任何实现,接口就是让子类实现的
- 定义一个接口,建议:一定要以大写I开头
- 接口里边能包含什么成员,接口里面只能包含【方法】(方法,属性,索引器,事件)
- 接口中的所有成员,都不能显示的 写任何访问修饰符,默认为public访问修饰符
- 接口中的子类成员,子类必须实现
- 1.接口可以实现“多继承”(多实现),一个类只能继承自一个父类,但是可以实现多个接口
- 2.接口解决了不同类型之间的多态问题,比如鱼和船不是同一类型,但是都能在水里游泳,只是方式不一样,要对游泳实现多态,就只能考虑接口
- 当一个类同时继承父类,并且实现了多个接口的时候,必须将继承类,写在第一个
- 当一个抽象类实现接口的时候,如果不想把接口的成员实现,可以把该成员实现为abstract(抽象类也能实现接口,用abstract标记)
- 显示实现接口没有访问修饰符,默认是私有的
- 显示实现接口时,在方法名称前加了接口名 如: 接口名.方法名
- 显示实现接口, 解决接口内方法重名问题,显示实现的调不到,因为是private的,只能通过接口变量来调用
编程时的建议:
- 接口--抽象类--父类--具体类(在定义方法参数、返回值、声明变量的时候能用抽象类就不要用具体)
- 能使用接口就不要用抽象类,能使用抽象类就不要用类,能用父类就不要用子类
- 避免定义体积庞大的接口,多功能接口,会造成接口污染,只把相关联的一组成员定义到一个接口中(单一职责原则)
- 定义多个职责单一的接口(小接口),(组合使用),(类似印刷术和活字印刷术)
异常处理
try{ 可能发生异常的代码 } catch{ 对异常的处理 } finally{ 无论是否异常都会执行的代码 }
- 当try块中某行代码发生异常,从该行开始后面的都不会继续执行,直接跳转到catch块执行
- 对不同的异常,使用不同的方式来处理(使用多个不同的catch块来捕获异常)
- 不管是否发生异常,finally中的代码都会执行
- 可以主动抛出异常
- throw; 只能在catch块中写,表示异常继续向上抛出