学习总结:接口和抽象类

感谢:bilibili  up主:学相伴飞哥   倾囊相授!这只是我的学习总结,更多知识可以关注飞哥!

1.为什么要面向接口编程:

在一个接口一个实现类的编程中面向接口编程毫无意义,这和抽象类+实现类不是一样的吗,spring中也有大量的抽象类来实现功能。但是,接口的好处是约束、规范。当一个东西有多套实现方式时,就可以用一个接口来将他们约束起来,这样在未来业务拓展时会非常方便。同时在jdk的动态代理需要以接口的方式才能实现(在框架中大量存在,比如:mybatis的mapper,spring的aop)

2.注意点:

接口中的方法写成 : void XXX(); 实际上是省略了public abstract 这两个关键字的,目的是为了开发时让程序员少写点代码,接口实现类中的方法都必须是public。同理,接口中的变量定义,int a= 10; 同样省略了 public static final 这三个关键字,括号中是原因:(定义时必须赋值是因为:int a;这个属性a是输入对象的,接口是不能new对象出来的,所以定义时不赋值是没有意义的。)

3.抽象类就是一个比普通方法多了一个抽象方法,抽象方法是子类的一种约束,告诉子类一定要覆盖和重写的方法。

4.为什么会存在抽象类呢?
原因是在实际的业务中,普通的父类很多时候无法起到约束子类的作用,比如:重写的方
法。
   ●因为能够让子类重写的方法,大部分情况父类是不需要去做事情,也就是必须让子类
自身去实现。普通的父类是起不到约束的作用,也就是说,父类中需要覆盖的方法和
普通方法这个时候就难以分辨和区分。所以就有了抽象方法abstract。后续的接口更
加能体现的淋漓尽致。
   ●我们知道抽象类。可以定义抽象方法和非抽象方法。那么父类中的非抽象方法的意义
是什么呢?其实还是回归到继承的概念:职责分担,大部分父类的非抽象方法就是去
分担子类的业务,这样便于后续的维护和升级,这样就不需要去修改每个子类。只需
要修改父类的方法,当然前提是方法的访问权限必须是: public或 者protected的,如
果是缺省的就必须在同包package中。
  ●抽象类,在平时的业务中那些场景下可以用到抽象类呢?
           ● 比如springmvc路 由的继承
           ● hibernate、 jdbctempalte中的通用类的增删改查
           ● 还有就是spring框架中存在大量的抽象类,其意义就是:责任分担。

5.接口中,可以定义静态方法,这个方法可以通过接口类去调用(接口名字.方法名字),这是公用的方法,表示实现了这个接口的所有实现类都可以去调用。

6.  jdk1.8之后新增了default和static方法,慢慢替代了抽象类的含义,但是不能完全消除抽象类,default很好的解决了接口实现类只想实现部分接口中的方法的想法。只需要在接口方法前面加上default关键字,那么这个方法在实现类中就是可以实现,可以不实现。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

maybezh

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值