面向对象的设计原则,接口和抽象类区别

深入浅出设计模式 --郭峰     看完的时候,发现很多(设计模式)与(面向对象的设计的原则,抽象类和接口)息息相关,总结以助记忆。


面向对象的设计原则:

1.单一职责原则(SRP,Single Responsibility Principle):系统中每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。

2.开闭原则(OCP, Open for Extension,Closed for Modification Principle):一个对象对扩展开发,对修改关闭。

3.依赖注入原则(DIP,Dependence Inversion Principle):要依赖于抽象,不要依赖于具体的实现。面向接口编程。

4.里氏替换原则(LSP,Liskov Substitution Principle):意思是在任何抽象类出现的地方都可以用它的实现类来替代。可以更好的使用继承。

5.迪米特原则(LOD,Law of Demeter):一个对象应该应该对其他对象尽可能少的了解,从而能够降低各个对象之间的耦合,提高系统的可维护性。各模块相互调用时,通常都会提供一个统一的接口来实现。

6.接口分离原则(ISP,Interface Segregaion Principle):意思是不应该强迫客户程序依赖他们不需要的使用的方法。可以参考适配器理解。

7.优先使用组合而不是继承原则(CARP,Composite/Aggregate Reuse Principle):如标题



抽象类和接口:

抽象类:

有抽象方法的必须是抽象类,抽象类可以没有抽象方法(一些类为了防止被实例化,可以在类名前添加abstract),可以有方法的实现。

类名前加abstract;

抽象类里面的成员变量可以被不同的修饰符修饰;

与实现是is-a关系;

抽象方法前不能加private,final;抽象方法为的就是让别的类实现。



接口:

类名前加interface;

方法必须全部是抽象方法,且没有实现。方法前默认的public abstract可以省略,在抽象类里面不可以省略;

接口里面的变量必须是public static final;

与实现是like-a关系;



一个类只能继承一个抽象类,可以实现多个接口;接口可以实现多个接口(public Interface1 extends Interface2,Interface3{})。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接口抽象类区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从理论上可以做一般性的混用,但是在实际应用中,他们还是有一定区别的。抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法,就像JAVA王子所说的事件中的适配器就是一个很好的应用。 用一个简单的例子,比如说一个教师,我们把它作为一个抽象类,有自己的属性,比如说年龄,教育程度,教师编号等等,而教师也是分很多种类的,我们就可以继承教师类而扩展特有的种类属性,而普遍属性已经直接继承了下来。 而接口呢~还是拿教师做例子,教师的行为很多,除了和普通人相同的以外,还有职业相关的行为,比如改考卷,讲课等等,我们把这些行为定义成无body的方法,作为一个集合,它是一个interface。而教师张三李四的各自行为特点又有不同,那么他们就可以扩展自己的行为body。从这点意义上来说,interface偏重于行为。 总之,在许多情况下,接口确实可以代替抽象类,如果你不需要刻意表达属性上的继承的话。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值