(1)实现接口的类 实例 = new 实现接口的类()
(2)接口 实例 = new 实现接口的类() ;
接口是不能实例化的,这里的接口实例化可以这样理解,实现接口的类是该接口的一个子类,可以将子类的实例赋值给其父类,也即接口,就像抽象类不能被实例化而实现其全部方法的子类可以被实例化并被赋值给它一样!具体过程如下:
1、接口 实例 应该理解为:接口 声明一个接口的引用。
2、new 实现接口的类();应理解为创建了一个类的实例。
3、将创建的类的实例的地址赋给接口的引用 。
可以理解为引用变量之间的赋值。
接口的好处:
考虑安全性的话或者说统一化的时候就用接口。接口可以隐藏类的类型,使用起来很方便。
接口实现了多态性,多重继承。在C#中只支持单继承,如果一个子类想从多个父类中继承的时候,只有通过接口在实现其定义的方法和属性等,实现了多态性,达到了代码重用!
接口继承意味着一个类型继承的是接口中的方法签名,而非方法实现。当一个类型继承了一个接口时,它只是在许诺提供其中的方法实现;如果类型没有提供接口方法的实现,那么类型将被认为是抽象的,从而不可能被执行实例化。
接口仅仅是一个包含着一组虚方法的抽象类型,接口方法不能包括任何实现,因此接口是不完整的(抽象的)
用接口就是让实例和实现类的耦合度降低。让程序更加容扩展。
当调用时不用关系自己使用的是什么类 只需要知道你要用什么方法就行了。
接口的一个应用:
接口 实例 = new 实现接口的类A()
接口 实例 = new 实现接口的类B()
接口 实例 = new 实现接口的类C()
这样的逻辑就是说,我们需要某个类,所以我们每次实例化它。
如果把 ABC这三个类,再用一个类封D装起来,会怎么样呢?
接口 实例 = D.A
接口 实例 = D.B
接口 实例 = D.C
我们还是需要某个类,但是,我们不需要每次都实例化了,只需要找D“拿”就行。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步