抽像类与接口的实际应用,还是模糊不清,不能彻底理解其中两者使用场景,望有经验的广大网友,为我开示,顿悟
接口主要作用是实现模板的具体业务, 主要负责业务的逻辑。比如,根据用户id获取用户信息,这个就可以在service层书写个接口, 然后userService去数据库查询数据。
接口主要是用于共用的事情,比如用户登录之后, 有很多的模板都需要获取当前用户名, 这个时候可以写个抽象函数,在里面写个获取用户名的抽象方法, 然后, 所有用到的service 继承这个抽象类, 都可以使用抽象类里面的方法来获取用户名信息
抽象类用的很少,接口用的很多,接口是一个特殊的抽象类,他们的异同点:
相同点
编译后都可以生成.class文件
不能创建对象
可以声明引用
都可以使用Object中的方法
不同点
接口中的属性都是公开静态常量,默认是由public static final修饰
接口中的方法都是公开抽象方法,默认由public abstract修饰
接口中没有构造方法,没有静动态初始代码块
使用场景
描述一类事物的时候,发现该事物确实存在着某种行为,但是目前该行为是不具体的,那么这时候我们应该抽取该方法的声明,不去实现该方法,这时候我们应该使用抽象类。
在现今的javaweb程序开发中,我们用的比较多的就是接口,接口通俗的将他是一种能力,或者约束,当然要调用接口,必须有实现接口的方法才可以,SSM,Springboot项目都有使用到接口,项目中dao层,service层都是接口
接口使用范围非常广泛,接口是一种规范,接口中的方法只申明,不定义,只能通过他的实现类实现;它的主要作用体现在以下几点:
1.统一参数传递,因为JAVA中所有的子类可以直接转换为父类,这在系统中随处可见;比如IO流,所有的参数类型都是顶级类的。
2.强制统一规范:比如10个人开发团队中,规定所有人的数据库操作方法必须同名,如果只是说要统一,不一定所有人会听,那怎么强制要求呢?可以定义接口,让所有人必须实现接口,这样就达到了规范的作用。
抽象类是介于普通类与接口之间的一种特殊类,抽象类既有普通方法,也有抽象方法,必须通过他的子类才能实例化,相对来说用得更少一些。