常见面试题一——抽象类和接口的区别是什么?

问题:抽象类和接口的区别是什么?

回答:

抽象类和几口是Java面向对象体系当中非常重要的两个元素,在语法和使用方法都有很多的区别,下面我就从这两个方面来回答这个问题:

第一:接口和抽象类在语法上的区别主要体现在以下的几个方面:

a)一个类可以实现多个接口,二除了Object之外,一个类只能有一个父类;

b)接口当中所有的方法都是抽象方法,并且默认为public权限,而抽象类当中可以有抽象方法,也可以没有抽象方法;

c)接口当中的变量全部为全局常量,而抽象类当中可以定义任何类型的变量;

d)抽象类当中有构造函数,而接口没有;

第二:在使用方法,接口的使用会更多一些,因为接口可以更好的隐藏具体实现的细节,从而降低系统的耦合度,提高可扩展性,下面我就谈一下我所理解的抽象类和接口在使用方面的区别:

a)在我经常使用的设计模式当中,如工厂模式,依赖注入模式,DAO模式等,都大量的使用到了接口,这些接口通常是作为一个模块被外部程序调用的标准。比如说,在DAO模式当中,要求将所有涉及到访问数据的代码全都封装到DAO层当中,业务层只能通过DAO层所暴露出来的借口来访问DAO对象。这样设计的好处可以解除业务逻辑和数据访问逻辑的耦合。对于抽象类来说,通常将通用的、固定代码写在抽象类的非抽象函数当中,而对于一些经常变化的功能,则定义为抽象类的抽象函数,这样的设计方法可以减少重复代码,提升代码的可复用性。

b)在常见的J2EE相关框架当中也经常的使用到接口和抽象类,如Spring框架就是最好的例子,使用Spring的依赖注入容器可以更容易的实现面向接口编程。而在Sping当中的模板代理模式当中,也使用到了抽象类的特征。

总而言之,使用接口和抽象类之类的目的,就是为了能尽可能是减少系统当中的重复代码,提升系统的可扩展性。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值