抽象类和接口的区别

作者: 第四单元 | 来源:发表于2019-01-07 10:09 被阅读120次

Java中的抽象类和接口是两个有些类似的概念,在某些情况下他们有着类似的语义。下面来总结一下他们各自的特点。

一.抽象类

首先要强调的是抽象类是类,用class声明。当一个类中有抽象的方法时,这个类也必须被声明为抽象的。抽象的方法或类都使用abstract修饰符来修饰。抽象类中可以有属性和非抽象的方法。抽象类不能被实例化,因为它有抽象的方法,无法调用。所以抽象类一般被设计用于继承。继承一个抽象类需要实现其所有的抽象方法,否则的话子类也应该被声明为抽象的。可以定义一个抽象类的引用来指向它的一个非抽象子类的对象。

二.接口

接口比抽象类的抽象程度更高,它完全不包括实例方法或属性。接口使用关键字interface来声明。接口中只包含方法的声明,它就是用来描述类具有什么功能,而并给出每个功能的具体实现。接口中所有方法都自动地属于public,所以不用显示地声明。实现一个接口就要实现它所有的方法。

三.比较

1.相同点
  • 接口和抽象类都不能被实例化;
  • 可以定义一个抽象类或接口类型的引用,用来引用子类或实现类;
2.不同点
  • 是否含有实例方法:抽象类中可以有实例属性和实例方法,接口中只能有抽象的方法和常量属性(static final修饰)。注:接口中不需要显示地声明方法为public,同样属性也不用显示声明为public static final;
  • 继承抽象类时可以不实现其全部的抽象方法。当然这时子类也要被声明为抽象的。实现接口时所有的方法都要被实现;
  • 抽象类使用关键字abstract class定义。接口使用interface定义。继承抽象类使用extends关键字,实现接口使用implements关键字;
  • 每个类最多继承一个抽象类,而可以实现多个接口;
  • 抽象类可以有main方法,并且我们可以运行它,接口不能有main方法;
  • 抽象类有构造方法,接口没有;
  • 使用抽象类时添加一个新的实例方法时,不需要修改子类;而为接口增加方法时,其所有实现类都要修改;
  • 在需要复用父类提供的一些基本代码,并且另外有部分代码需要子类实现时可以使用抽象类,它就像一个类的模板,如jdk中的aqs抽象类;如果要实现多继承那就必须使用接口;

相关文章

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • 接口和抽象类

    接口和抽象类的区别? 接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制...

  • 抽象类和接口的区别

    以下两篇文章介绍了接口和抽象类的概念接口概念抽象类概念 抽象类和接口的区别: 抽象类:需要使用abstract关键...

  • 接口和抽象类的区别

    接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类...

  • Java基础 (7) 抽象类和接口

    抽象特性的具体体现方式。1)抽象类区别和接口的区别2)抽象类的意义3)抽象类与接口的应用场景4)抽象类是否可以没有...

  • Java--接口和抽象类

    ·为什么需要接口?接口和抽象类的区别?  接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束...

  • 浅谈抽象类和接口的区别

    最近我看了一些接口和抽象类的区别,在这里我将我的所总结的内容分享给大家。 抽象类和接口的区别 1.抽象类使用abs...

  • Java 接口知识点

    接口的特性 函数式接口 抽象类和接口区别 Lambda表达式 java常用接口

  • Kotlin 零基础学习 接口和抽象类

    接口:接口就是暴露一种物体与另外一种物体沟通的方法 抽象类 接口 这么看接口和抽象类没什么区别,抽象类能干的接口也...

  • 抽象类和接口区别

    区别 接口 抽象类

网友评论

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

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