美文网首页
抽象类和接口区别

抽象类和接口区别

作者: 吹破天 | 来源:发表于2018-06-12 09:50 被阅读0次

    一.抽象类和接口区别:

    抽象类由abstract关键字来修饰,接口由interface关键字来修饰。

    抽象类中除了有抽象方法外,也可以有数据成员和非抽象方法;

    而接口中所有的方法必须都是抽象的(public abstract类型),接口中也可以定义数据成员,但必须是常量(public static final)。

    抽象类可以有构造方法,接口不能有构造方法

    抽象类速度比接口速度要快,接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。

    与正常Java类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别;接口是完全不同的类型

    /*

    参考资源http://blog.csdn.net/wei_zhi/article/details/52736350

    https://www.cnblogs.com/jizuiku/p/7466609.html

    *1.如果一个类中含有抽象方法(abstract),你还不定义为抽象类abstract,必然报错

    *2.抽象方法中没有方法体

    *3.抽象类中可以不含有抽象方法

    *4.抽象类无法直接进行实例化操作,需要依靠子类采用向上转型的方式处理 ->TestDemo

    *5.抽象类中方法只含有public,protected,不能含有private,不写默认为public

    *6如果抽象类中方法用的是protected,则子类可以重写为public或protected;如果抽象类中方法用的是public,则子类可以重写为public

    *7.子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。);

    *8.抽象类可以有构造函数,子类必须也有构造函数并且如果继承有参数的构造函数不用super则会报错

    *9.抽象类可以用final声明么?

    不能,因为抽象类必须有子类,而final定义的类不能有子类;

    *10.抽象类可以有成员变量,当然public和protected,不能是private,final,而且可以是静态static

    *11.抽象类方法也可以是static

    * */

    /*

    在Java中,一个抽象类只能继承一个抽象类,但一个接口却可以使用extends关键字同时继承多个接口(但接口不能继承抽象类)。

    由此可见,从继承关系来说接口的限制比抽象类少:

    (1)一个抽象类只能继承一个抽象父类,而接口可以继承多个接口;

    (2)一个子类只能继承一个抽象类,却可以实现多个接口(在Java中,接口的主要功能是解决单继承局限问题)

    */

    相关文章

      网友评论

          本文标题:抽象类和接口区别

          本文链接:https://www.haomeiwen.com/subject/ofigsftx.html