接口和抽象之间有啥区别以及依赖注入如何[重复]
Posted
技术标签:
【中文标题】接口和抽象之间有啥区别以及依赖注入如何[重复]【英文标题】:What's the difference between interface and abstract and how about Dependency Injection [duplicate]接口和抽象之间有什么区别以及依赖注入如何[重复] 【发布时间】:2013-02-08 05:07:02 【问题描述】:我想知道interface
和abstract
类之间有什么区别?
有什么优点/缺点,我应该什么时候使用?
除了这些问题,我还能用抽象类进行依赖注入吗? 由于我正在使用 DI 并想声明静态字段/私有方法
【问题讨论】:
编辑了问题。老兄可能会给某人一些时间,然后再重复发送垃圾邮件? 【参考方案1】:接口不能有实现。
抽象类可以有实现——这可以被继承/实现类型使用。
当您想在继承类型之间共享实现时使用抽象类,以允许代码重用(并保留DRY)。
另外,一个类可以实现任意数量的接口,但只能从一个类继承,所以这是另一个考虑因素。
【讨论】:
另外值得一提的是,一个类/接口可以实现/扩展多个接口,但一个类只能扩展一个抽象类。 @TheBuzzSaw - 好点。答案已更新。 谢谢,我更新了我的问题。所以我可以在抽象类中声明我的私有/静态字段和方法,在接口中声明我的公共类? @HellScream - 你可以用抽象类做 DI,是的。你几乎可以在抽象类中做任何普通类可以做的事情,除了实例化它。 所以摘要主要用于 DRY 和接口,就像“合同”一样,谢谢!【参考方案2】:一个区别是抽象类可以包含实现的成员,而接口成员没有任何实现/
另一个是接口不能有字段,抽象类可以。
抽象类鼓励为继承它的类重用基础代码, 而接口在实现相同接口的类之间创建兼容性。
如上所述,您可以实现多个接口,但您只能从一个类继承。
【讨论】:
以上是关于接口和抽象之间有啥区别以及依赖注入如何[重复]的主要内容,如果未能解决你的问题,请参考以下文章