0
点赞
收藏
分享

微信扫一扫

Java:抽象类和接口的区别

琛彤麻麻 2022-02-23 阅读 76

文章目录


前言

这篇记录Java中抽象类和接口的复习

一、抽象类

抽象类的概念,在《JAVA编程思想》中,将将抽象类定义为“包含抽象方法的类”,但事实上如果一个抽象类不含有抽象方法,只用abstract关键字进行修饰,则其也可以成为抽象类;

因此,我们不妨对抽象类的定义做如下的理解

  • 用abstract修饰的类
  • 含有抽象方法的类
    在这里插入图片描述

抽象类和普通类的不同:

  • 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
  • 抽象类不能用来创建对象;
  • 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

抽象类和普通类的相同:
抽象类含有抽象方法,但是并不是只能有抽象方法;它和普通类一样,同样可以拥有成员变量和普通的成员方法。其他方面,抽象类和普通类具有相同的特点

二、接口

接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。从这里,我们可以体会到Java语言设计者的初衷,它是对行为的抽象。

与抽象类方法必须为public/protected不同;接口中的方法会隐式地被指定为public abstract且只能是public abstract,变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)

三、区别

语法层的区别

  • 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  • 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

设计层的区别

  • 抽象类针对类本身,接口是对行为进行抽象
  • 设计层面不同,抽象类是一种模板式设计,而接口是一种行为规范

总结

最后以图的形式做出总结
在这里插入图片描述

参考博客
抽象类和接口类的区别

举报

相关推荐

0 条评论