Ice-jjie接口 vs 抽象类:一篇讲清「继承」与「扩展」的底层逻辑,新手也能秒懂 中发帖

面向 Java 初学者。读完你应该能回答: 
什么时候用抽象类?什么时候用接口?它们分别解决什么问题?


目录

一、先建立直觉:继承 vs 扩展
二、Java 接口是什么
三、为什么需要接口(理解本质)
四、定义与实现接口
五、抽象方法与抽象类
六、接口 vs 抽象类:核心对比
七、怎么选型(实用判断)
八、一句话总结


一、先建立直觉:继承 vs 扩展
在面向对象里,两个很常见、但容易混在一起的概念:




概念
关系
口语理解
典型例子




继承
is-a(是一种)
子类「本质就是」父类的一种
狗 是 动物


扩展
can-do / has-a(会做什么 / 具备什么能力)
类「额外具备」某种能力
狗 会 游泳、可 比较、可 序列化




抽象类更偏向「继承」:抽共性、复用代码、规定同一族类必须怎么做。
接口更偏向「扩展」:给不同类挂上同一套能力规范,且不破坏 J...