抽象类和接口的区别

1.首先抽象类也是类, 既可以有正常方法, 也可以有抽象方法, 然而接口相当于多个类的规范, 没有方法体, 里面所有的方法和属性都会被隐式定义为 public abstract, java中不允许被多继承, 但允许多实现

抽象类的特性 (abstract) :

抽象类不能实例化对象, 只能创建抽象类的子类, 然后由子类重写抽象类中的抽象方法(全都要重写, 不然还是抽象类)

抽象类因为要被重写, 所以不能是 private修饰, 同理, 里面的抽象方法也是, 同时也不能被 final和 static修饰

抽象类中可以有构造方法, 这可以供子类在创建对象时初始化父类成员变量
接口的特性 (interface) :

接口是一种引用类型, 但是不能直接实例化

接口中的每一种方法都是 public abstract, 变量是 public static final

实现接口的类如果没有实现接口中的每一种抽象方法, 就要被设置成抽象类

接口虽然不是类, 但是在编译完成后的字节码文件的后缀格式也是 .class

接口中不能有构造方法

  1. 抽象类就像是一个产品的半成品, 里面既可以有完整的方法, 也可以有抽象的方法, 接口就像是一个制定标准和规范
  1. 继承抽象类, 我们可以进行抽象方法的重写, 功能的扩展, 要是不满意父类功能也可以选择重写
  1. 实现接口, 我们要按照他给的规范从头制定一个完整的产品
相关推荐
C+-C资深大佬21 小时前
C++多态
java·jvm·c++
Coder_preston21 小时前
JavaScript学习指南
开发语言·javascript·ecmascript
WJX_KOI21 小时前
保姆级教程:Apache Seatunnel CDC(standalone 模式)部署 MySQL CDC、PostgreSQL CDC 及使用方法
java·大数据·mysql·postgresql·big data·etl
阿猿收手吧!21 小时前
【C++】无锁原子栈:CAS实现线程安全
开发语言·c++·安全
写代码的【黑咖啡】21 小时前
Python 中的自然语言处理工具:spaCy
开发语言·python·自然语言处理
沐知全栈开发21 小时前
WSDL 语法详解
开发语言
今天你TLE了吗21 小时前
JVM学习笔记:第一章——JVM&Java体系结构
java·jvm·笔记·学习
毕设源码-朱学姐21 小时前
【开题答辩全过程】以 基于JAVAweb的影视创作论坛系统为例,包含答辩的问题和答案
java
wangmengxxw21 小时前
设计模式 -详解
开发语言·javascript·设计模式
froginwe1121 小时前
ECharts 样式设置
开发语言