抽象类和接口的区别

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

抽象类的特性 (abstract) :

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

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

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

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

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

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

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

接口中不能有构造方法

  1. 抽象类就像是一个产品的半成品, 里面既可以有完整的方法, 也可以有抽象的方法, 接口就像是一个制定标准和规范
  1. 继承抽象类, 我们可以进行抽象方法的重写, 功能的扩展, 要是不满意父类功能也可以选择重写
  1. 实现接口, 我们要按照他给的规范从头制定一个完整的产品
相关推荐
We་ct1 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
身如柳絮随风扬1 小时前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务
skywalk81631 小时前
在考虑双轨制,即在中文语法的基础上,加上数学公式的支持,这样像很多计算将更加简单方便,就像现在的小学数学课本里面一样,比如:定x=2*x + 1
开发语言
小书房1 小时前
Kotlin的by
android·开发语言·kotlin·委托·by
就叫飞六吧1 小时前
QT写一个桌面程序exe并动态打包基本流程(c++)
开发语言·c++
threelab2 小时前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
Java小生不才2 小时前
Spring AI文生音
java·人工智能·spring
凯尔萨厮2 小时前
Springboot2.x+Thymeleaf项目创建
java
V搜xhliang02462 小时前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化
kaikaile19952 小时前
风、浪、流环境模型的船舶三自由度(纵荡、横荡、艏摇)运动仿真MATLAB
开发语言·人工智能·matlab