Java中的类、普通类,抽象类,接口的区别

Java 中主要有 5 种类型

类型 关键字 特点
普通类 class 完整实现,可直接实例化
抽象类 abstract class 半成品,有抽象方法,不能直实例化
接口 interface 纯规范,JDK8+ 可有默认方法
枚举 enum 固定常量集合,如星期、状态
注解 @interface 元数据标记,如 @Override

快速对比

复制代码
// 普通类
public class Dog { }

// 抽象类
public abstract class Animal { }

// 接口
public interface Flyable { }

// 枚举
public enum Status { SUCCESS, FAIL }

// 注解
public @interface MyAnnotation { }

特殊说明

类型 补充
内部类 类中定义的类(成员/静态/局部/匿名)
记录类 JDK14+ record Point(int x, int y),简化数据类

一句话

最常用:普通类、抽象类、接口 ;特定场景用:枚举、注解

普通类,抽象类,接口的区别

三者核心区别

特性 普通类 抽象类 接口
关键字 class abstract class interface
实例化 ✅ 可以直接 new ❌ 不能直接 new ❌ 不能直接 new
构造方法 ✅ 有 ✅ 有(供子类调用) ❌ 没有
成员变量 任意 任意 默认 public static final(常量)
方法 全部实现 抽象方法 + 普通方法 JDK8前全抽象;JDK8+可有默认/静态方法
继承/实现 单继承 单继承 多实现
设计目的 完整功能 代码复用 + 部分规范 纯规范/能力定义

抽象类,接口的区别

接口是自上而下的设计,在功能开发初期,知道这个功能需要哪些方法,但是具体实现还不确定怎么写,就可以先把这些行为定义成接口,这就小自上而下的设计。

抽象类是自下而上的设计,在开发一段时间之后,发现几个类的逻辑很相似,代码很多重复,维护痛苦,这时候就可以把重复代码抽出来,做一个父类,让子类调用。

代码对比

java 复制代码
// 普通类:完整实现
public class Dog {
    public void eat() { System.out.println("吃东西"); }
}

// 抽象类:模板 + 部分实现
public abstract class Animal {
    protected String name;           // 实例变量
    public abstract void speak();    // 抽象方法
    public void sleep() { }          // 普通方法
}

// 接口:纯规范
public interface Flyable {
    int MAX_HEIGHT = 10000;          // 默认 public static final
    void fly();                      // 默认 public abstract
    default void land() { }          // JDK8+ 默认方法
}

使用场景

场景 选择
完整功能,直接复用 普通类
有共同代码,部分方法需子类实现 抽象类
定义能力/规范,与实现解耦 接口
需要多继承(实现多个能力) 接口

一句话

普通类 = 成品;抽象类 = 半成品模板;接口 = 能力契约。

相关推荐
Lyndon-李大鹏2 小时前
QT-VS环境
开发语言·qt
摇滚侠2 小时前
Java 全栈开发实战教程 课程笔记 34-36
java·笔记
芝士熊爱编程2 小时前
创建型模式-单例模式
java·单例模式·设计模式
大模型码小白2 小时前
Spring AI 框架实战:Java 后端集成大模型的架构设计与工程落地
java·人工智能·python·spring
微学AI2 小时前
内网穿透的应用-把飞牛NAS变成家庭录像中心:EasyNVR部署与远程回放实战
开发语言·php
峥嵘life2 小时前
Android WiFi连接过程 wpa_supplicant 日志分析
android·开发语言·php
BerryS3N2 小时前
深度解析:从零构建生产级大模型 RAG(检索增强生成)系统全栈指南
开发语言·python·ai
weixin_BYSJ19872 小时前
「课设设计」springboot校园超市助购系统26449 (附源码)
java·javascript·spring boot·python·django·flask·php
栋***t2 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?
java·大数据·人工智能·算法·重构
今儿敲了吗2 小时前
Python——函数基础
开发语言·笔记·python