您的位置:首页 > 职场人生

[好程序员训练营]java基础之抽象类和接口的区别小结

2015-05-17 10:08 453 查看
<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流!

相信很多同学曾今被抽象类和接口的问题搞的晕晕的.

今天就来做个抽象类和接口的小结,希望对自己对大家都有些小小的帮助,这就够了.

开始做笔记.

一:什么是抽象类?什么是接口呢?

把多个共性的东西抽取到一个类中,继承是这样做的,但是呢?有时候这些类中的方法声明是一样的,但是它的具体的内容不是一样的,所以我们肯定不能给出方法体,所以这个方法就是抽象的,而这个类就是抽象的.抽象类中方的是

简单说接口就是一种规范,是一种java提供给程序员和厂商的一种规范,一种协议,比如用jdbc中api链接数据库,那么所有的数据库厂商都要按照此标准来执行,这是一种协议,一种规范,那么为什么要有接口呢?目的是为了是实现和规范分离,降低耦合性,实现分离,增加拓展性.

二:抽象类和接口的使用方法?

先说一下抽象类的使用方法:以几行代码简单说明一下.



要注意的是:

1,抽象类必须用abstract关键字修饰.

2,抽象类中的可以有抽象方法,也可以有普通的方法,也可以没有抽象方法比如AWT中的适配器类.

3,抽象类的继承类必须基础它的所有抽象方法,不然该子类还是抽象类.

4,抽象类中有变量有常量,有构造方法,有抽象,非抽象方法.

5,abstract不能和private,final,static关键字共存,因为和private冲突,加上private表示私有,不能被同包或者子类或者其他包中使用,那么
abstract就没法让子类替他去实现功能了.和final关键字也是冲突,final修饰后表示该类是最终类不能被子类继承,还是与抽象类被子类继承互相
矛盾.与static关键字共存是没有必要没有意义,因为static标记后是随着类的加载而加载,是优先于对象存在的,但是你的抽象类为什么要优先
加载 呢?有什么意义吗?我认为没有.

再说一下接口的基本使用方法:也已几行简单的代码演示一下.





我们可以看到接口使用interface关键字来表示并非用class标识.那么实现一个接口也必须实现它里面的所有方法,当然抽象类除外.

那么我们就小结一下接口的特点:

1,接口用interface标识.

2,接口中只能有常量不能有变量,而且格式固定:public static final 常量名.方法全部是抽象的格式固定:public abstract 返回值 方法名.

3,接口中没有抽象方法,所以不能被实例化.

4,具体实现类只能单继承可以多层继承,但是类与类不能多继承,然而接口之间可以多继承,类可以实现多个接口.

最后小结一下接口和抽象类的区别吧:

1,成员方面:抽象类可以有变量,常量,而接口只能是常量而且格式固定,抽象类可以有抽象非抽象方法,甚至可以没有方法,但是接口全部是抽象方法.

2,关系上:类与类之间只能是单继承关系,支持多层继承但是不支持多继承,但是类与接口之间支持多实现,接口与接口之间支持多继承,当然接口之间也可以单继承了.

3,大师在设计目的上:抽象类方法是is a关系,就是抽象类中定义的方法都是有共性的因为都是具体类向上抽取的共性内容,而接口方法是like a关系,接口中定义的抽象方法都是扩展功能.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: