抽象类和接口的区别

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

抽象类的特性 (abstract) :

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

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

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

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

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

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

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

接口中不能有构造方法

  1. 抽象类就像是一个产品的半成品, 里面既可以有完整的方法, 也可以有抽象的方法, 接口就像是一个制定标准和规范
  1. 继承抽象类, 我们可以进行抽象方法的重写, 功能的扩展, 要是不满意父类功能也可以选择重写
  1. 实现接口, 我们要按照他给的规范从头制定一个完整的产品
相关推荐
yunsr11 小时前
python作业3
开发语言·python
4311媒体网11 小时前
C语言操作符全解析 C语言操作符详解
java·c语言·jvm
淡忘_cx11 小时前
使用Jenkins自动化部署spring-java项目+宝塔重启项目命令(2.528.2版本)
java·自动化·jenkins
星火开发设计11 小时前
this 指针:指向对象自身的隐含指针
开发语言·数据结构·c++·学习·指针·知识
梵刹古音11 小时前
【C++】构造函数
开发语言·c++
毕设源码-钟学长11 小时前
【开题答辩全过程】以 基于SSM的孤儿救助信息管理系统设计与实现为例,包含答辩的问题和答案
java
独自破碎E11 小时前
【曼哈顿距离】BISHI25 最大 FST 距离
java·开发语言
苏涵.11 小时前
Java三大集合:List、Set、Map
java·开发语言
Amumu1213811 小时前
Vue3 Composition API(一)
开发语言·javascript·ecmascript
存在的五月雨11 小时前
Spring Security认证流程
java·开发语言·mysql