抽象类和接口的区别

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

抽象类的特性 (abstract) :

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

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

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

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

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

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

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

接口中不能有构造方法

  1. 抽象类就像是一个产品的半成品, 里面既可以有完整的方法, 也可以有抽象的方法, 接口就像是一个制定标准和规范
  1. 继承抽象类, 我们可以进行抽象方法的重写, 功能的扩展, 要是不满意父类功能也可以选择重写
  1. 实现接口, 我们要按照他给的规范从头制定一个完整的产品
相关推荐
devilnumber2 小时前
Java 递归算法 详解 + 核心要点 + 实战运用 + 避坑指南
java·开发语言·算法
asdfg12589634 小时前
JavaBean是什么?怎么理解?有什么用途?
java·开发语言
dsyyyyy11014 小时前
JavaScript变量
开发语言·javascript·ecmascript
z落落5 小时前
C#WinForm 窗体切换与窗体传值(登录跳转案例)+WinForm 窗体传值(从上往下传、从下往上传)
开发语言·windows·c#
allway25 小时前
How to Echo Multiline to a File in Bash [3 Methods]
开发语言·chrome·bash
weixin_462446235 小时前
手把手教你用 Bash 脚本自动更新 /etc/hosts —— 自动绑定网卡 IP 与节点名
开发语言·tcp/ip·bash
一个梦醒了5 小时前
安装git bash选项推荐
开发语言·git·bash
摇滚侠5 小时前
SpringMVC 入门到实战 文件上传 75-77
java·后端·spring·maven·intellij-idea
GIS数据转换器5 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
ct9786 小时前
React 状态管理方案深度对比
开发语言·前端·react