首页 > 其他 > 详细

接口和抽象类的区别

时间:2021-08-22 14:36:37      阅读:11      评论:0      收藏:0      [点我收藏+]

是什么?

  • Interface:
    接口是一种行为的抽象。但是现在无论是接口还是抽象类,感觉都已经脱离了本来的这种定义。而主要用来解耦了。例如dao层就是一系列的接口,那么数据库实现就可以随时改动。
  • 抽象类
    抽象类是对象的抽象。使用较少。因为子类只能单一继承抽象类,大大限制了灵活性。

为什么?

  • 上面说了,无论接口和抽象类,都已经被用来解耦了。除了dao层之外,例如Service层也要使用接口。事实上,这不是一定的。试想,我不可以直接改动实现类吗?的确,无意义的使用接口还不如不用。接口此时的作用,第一是对service层的说明。开发中可不是你自己一个人包揽一个项目,此时接口也成为了一个说明书,说明实现类的入参、出参、功能,再加上对功能的合理划分,就能使得每一个接口简单易懂,易维护。第二,就是解耦。接口的良好定义会强迫你去把不同的服务实现,即使只是一个简单的功能。例如登录过程中发送验证码,这是一个简单的功能,于是你就直接写在了登录服务里,那么之后要改动验证码的功能,是不是还要去登录里改?如果进行隐私操作时,需要验证码,你是不是还要重新写一次验证码验证?第三,就是对外暴露服务。比如在开发controller层时,还没有想好服务层的实现,不要紧,在接口中写一个就好了,之后再进行实现。此外,例如dubbo,微服务,已经不只是传统的三层架构了,更是把服务进行了更彻底的解耦,这时候更需要接口来对外规定服务的使用和名称。

怎么用?

  • 接口
    可以看到,接口常量是默认且不可更改的使用了staic final public修饰的。且不可定义变量。方法不可以带上实现体。
    技术分享图片
    此外,接口的另外一种适用使用方法:
    	public void contextLoads() {
    	Fly fly = new Fly() {
    		@Override
    		public void print1() {
    		//实现
    		}
    
    		@Override
    		public void print2() {
    		//实现
    		}
    	};
    }
    
  • 抽次类
    抽象类则和普通的类无差别,主要是对象关系上的抽象is a
    技术分享图片

接口和抽象类的区别

原文:https://www.cnblogs.com/Deng-23-binb/p/15171604.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!