接口和抽象类的理解 和因该在什么时候用到!

1.首先说一下他们的理论区别

a:abstract是”is a”的关系(’是什么‘的意思,例:树是植物 单继承关系),interface是”like a”的关系(“像什么”的意思,例:我跟我爸爸长的很像,我兄弟跟我爸爸长的也很像  多继承关系);

b、抽象类被子类继承,接口被类实现.

c、抽象类中可以做方法申明,也可以做方法实现(里面写实现可以用private,但是用抽象类修饰的方法不能用private修饰),接口只能做方法申明;

d、抽象类中可以有成员变量,接口中不能有成员变量;

e、抽象类里的方法可以被protected修饰和public 如果不加修饰符这是默认的default不能用private修饰没有意义,接口只能被public修饰。


2. 这么多区别对于我们设计代码的时候,我就会想什么时候用接口什么时候用 抽象类呢?

    下面是自己的理解加上网络中各种大神理解的总结 。

a、通过上面分析我们不难发现定义了abstract的类只能被别的类继承而且被继承的类只能继承一个抽象类,

     但是接口就不一样我们可以给一个类定义多个接口,这是我感觉这2个java中定义抽象类的最大区别。

     所有在做项目的时候不难发现最上层为接口,中间层次为抽象类(因为抽象类可以实现也可以方法声明),往下就是我们的实现类。(求大神看看自己理解不知道对不对)

     在现在的项目中全是对于数据库的增删改查,所以我们把增删改查方法申明写成一个接口,然后在经过调用来实现方法的复用从而可以减少代码,提高复用。

      从复用性的角度因该还看出来了java中重要的一个原则“开闭原则”。

(1)开闭原则的2个特点

     对修改关闭,

     在运用的接口或者抽象java类的时候 ,我们的抽象层因该预见所有可能的扩展。因此在写完抽象层后任何情况下不会改变。
这样就满足了开闭原则的对修改关闭这一条。

     对扩展开放。

     在实现抽象类和接口的新的具体类可以改变系统的行为,所以系统的设计对扩展是开放的满足对扩展开放。

b、接口的理解

      接口因为只有方法声明没有定义的, 因此可以理解成接口是子类实现其方法声明而不是继承其方法。但是一般类的方法可以有方法体,那么叫继承比较合理。因为接口就是个规范,是个没方法体的方法声明集合。

      我来举个例子吧:接口可以比作协议,比如我说 一个协议是“杀人”那么这个接口你可以用砍刀去实现,至于怎么杀砍刀可以去实现,当然你也可以用抢来实现杀人接口,但是你不能用杀人接口去杀人,因为杀人接口只不过是个功能说明,是个协议,具体怎么干,还要看他的实现类。那么一个包里面如果有接口,你可以不实现。这个不影响你使用其他类。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值