Java——抽象类与接口的区别

定义区分:

抽象类:抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板

接口:接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情

核心区别:抽象类中可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用(不必重写),而接口中不能包含普通方法,子类必须重写所有的抽象方法

如举例所用的Animal类,此处的Animal类中包含一个name这样的属性,这个属性在任何子类中都是存在的,因此此处的Animal类只能作为以一个抽象类,不应作为一个接口使用

抽象类存在的意义是为了让编译器更好的校验,像Animal这样的类我们并不会直接使用,而是使用它的子类,万一不小心创建了Animal类的实例,编译器会及时提醒我们

抽象类和接口的对比表:

相关推荐
架构师沉默4 分钟前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群1 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL2 小时前
JVM 类加载:双亲委派机制
java·后端
用户298698530143 小时前
Java HTML 转 Word 完整指南
java·后端
渣哥3 小时前
原来公平锁和非公平锁差别这么大
java
渣哥3 小时前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K3 小时前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端
kfyty7253 小时前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
isysc15 小时前
面了一个校招生,竟然说我是老古董
java·后端·面试
道可到8 小时前
Java 反射现代实践速查表(JDK 11+/17+)
java