类
-
普通类 (自己的事情自己做,或者覆盖父类的行为自己干(重写))
-
抽象类(职责分担)
-
接口 (规范)
它都统称为类,在类中其实就存在两样东西:属性一个和方法(行为,函数)。
继承
目的:职责分担 & 单一职能
-
为什么要继承?
-
可以达到封装,复用的目的。好比你为什么要爸爸,要干爹?
-
因为爸爸,干爹可以帮你做一些事情,起到一个职责分担的作用。
-
-
-
继承什么?
-
类中只有属性和方法,继承也就去继承父类的属性和行为。
-
-
访问修饰符,private public protected 缺省的。
问题1:为什么一个类实现多接口?
-
你未来接触ssm框架,或者springboot,或者微服务,大部分的情况下都是面向接口编程。
面向类编程
@Service
@Slf4j
public class CollectServiceStream {
}
@Service
@Slf4j
public class CollectServiceDBStream {
}
面向接口编程
-
ICollectService(标准和规范)
-
CollectAllServiceImpl(实现者)
在开发中,其实现在这种写法就是面向接口编程的写法,很多时候有一个这样思考,这个接口很无聊。好像没有什么用处?其实在开发中,很多时候接口确实只有一个实现类,但是你能代表未来你业务不扩展吗?
-
假如你现在做了爸爸或者妈妈
-
规范和约束 goShop()
-
-
大儿子,
-
实现这个规范和约束 goShop() --- 开车
-
-
小儿子
-
实现这个规范和约束 goShop() --- 走路去
-
在开发一个接口看上去确实没什么用处,但是在未来的生成和开发如果一旦扩展,那么接口的真正的意义就体现淋漓尽致。你就知道接口为什么是标准和规范,就如同上面的爸爸妈妈说去逛街一下。我只是把逛街的行为定义着,但是不实现,有若干个儿子去实现。如果没有这种规范,那么所以儿子对象就杂乱无章
什么样子的情况下使用接口
-
一个业务有多种实现的情况下
-
业务和代码进行升级,一定是扩展子类,不要在原来的子类上进行覆盖编写。
-
达到一个高内聚(对内修改关闭,对外修改扩展),低耦合
问题2:为什么在底层框架代码看到一个类实现很多接口?
-
平时写代码,还是很少这样的状况,甚至你未来很长时间都不会写一个类实现多个接口。
-
spring 底层你会发现一个类会实现很多的接口。是很常见方式。为什么这样做呢?
作用
-
化整为零
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
}
-
保持类的单一职能,和 方便扩展
100个需要子类实现的方法?
-
各种干爹1 - AbtractXXXXXX implmennets EnvironmentCapable
-
各种干爹2-- AbtractXXXXXX implmennets ListableBeanFactory
-
各种干爹3-- AbtractXXXXXX implmennets HierarchicalBeanFactory
-
各种干爹4-- AbtractXXXXXX implmennets MessageSource
-
各种干爹5-- AbtractXXXXXX implmennets ApplicationEventPublisher
public class 飞哥(干儿子) extends AbtractObject {
}
问题3:为什么开发中一个类继承一个父类还要实现接口?
-
mybatis
-
tk-mybatis (二次myabtis封装)
-
mybatis-plus (二次myabtis封装)
-
mybatis-generator (没有)
-
mapper
-
mapper.xml
-
-
-
jpa
-
jdbctemplate