JAVA继承和接口

来源:百度知道 编辑:UC知道 时间:2024/06/25 21:47:39
子类不是可以拥有自己新的属性,这样为啥要用接口,接口也只定义一个方法的声明,不给出方法体,还是在子类中再写!这样,继承子类中使用新增加属性和方法不就好了,干嘛要弄接口这东西出来?

举个例子

首先我有一个接口叫做SaveUserService,里面有个方法较public void save()然后我又写了一个JDBCSaveUserImpl实现上述接口,这样我必然要重写这个save方法,由于方法名我定义了脚JDBC我必然要在代码里面写上各种连接语句(没有那么变态的写了jdbc不用jdbc编程的)

而我在客户端一侧的所谓试图层如果要保存用户信息自然要调用save方法,这个时候我要先声明一个SaveUserService接口的引用然后给他赋值成JDBCSaveUserImpl的实例,也就是new JDBCSaveUserImpl();(当然正式项目不会这么new,一定会用各种模式比如工厂模式,或者spring的IoC把这个实力注入进来)

调用的时候自然用的是JDBCSaveUserImpl里面的save方法,但是现在需求变了,要用Hibernate来连数据库,怎么办?自然是写一个HibernateSaveUserImpl里同样实现上述的接口,这时候save方法里面就写hibernate的内容了,然后在修改spring的配置文件让Ioc注入新的实现类实例

哇,前台的各层里面内容一点都不用改,这不就是传说中的高内聚,松耦合,提高代码的重用性么?如此happy并且偷懒的方法自然要广泛弘扬了

这里只举了一个类的例子,设想下如果是300个功能的大系统,如果你的领导万一哪天抽风要换实现方式,难道你每个类都改?300个功能可能会调用上千次实例,每个都改必然是死定了,天天加班到12点,但是如果用了spring加接口加多层架构,你只需要改中间某些层然后修改下spring的配置文件就ok了

如果都这么说了还没明白就继续学,学到完整做个工程时候就明白了

因为JAVA里面只能单继承..而接口可以声明多个..用接口主要是结构化的问题,让别人更容易读懂...你可以每个类都写同样的方法和属性,但是用接口可以把这些都归类起来.而且有些地方比如多线程或者是图形界面的时候是要求必须声明某些接口的.

其实关键还是为了代码的管理,优化。
推荐看一下 模式设计 这本书。

因为类的继承在JAVA中只能支持单继承