抽象类&接口

一、抽象类(abstract class)

  1. 定义

用 abstract 修饰的类,不能直接 new 创建对象,专门用来被子类继承。
包含两种方法:

  1. 抽象方法:只有方法声明,没有方法体,必须由子类重写实现;

  2. 普通成员方法:有完整方法体,子类可以直接复用。

  3. 核心语法示例
    // 抽象类
    abstract class Animal {
    // 抽象方法(无方法体,子类必须重写)
    public abstract void cry();

    // 普通方法(子类直接继承使用)
    public void sleep() {
    System.out.println("动物睡觉");
    }
    }

// 子类继承抽象类,必须实现全部抽象方法
class Cat extends Animal {
@Override
public void cry() {
System.out.println("喵喵喵");
}
}
3. 抽象类特点

  1. 用 abstract class 声明,单继承:一个类只能继承1个抽象类;

  2. 可以包含:成员变量、构造方法、普通方法、静态方法、抽象方法;

  3. 构造方法存在,但只能给子类初始化,不能自己实例化;

  4. 变量可以是普通变量、静态变量,支持任意访问修饰符;

  5. 设计目的:提取子类公共代码,约束子类必须实现某些功能。
    二、接口(interface)

  6. 定义

行为规范/标准,用 interface 声明,只定义行为契约,不存实现逻辑。
Java 8+ 接口允许:抽象方法、默认方法(default)、静态方法;Java9+支持私有方法。

  1. 核心语法示例
    // 接口:定义会跑的规范
    interface Run {
    // 抽象方法(默认 public abstract,必须实现)
    void run();

    // Java8 默认方法,有方法体,子类可重写可直接用
    default void breath() {
    System.out.println("呼吸");
    }

    // 静态方法,只能接口名调用
    static void show() {
    System.out.println("奔跑接口");
    }
    }

// 类实现接口,用implements,必须重写所有抽象方法
class Dog implements Run {
@Override
public void run() {
System.out.println("小狗奔跑");
}
}
3. 接口特点

  1. 用 interface 声明,多实现:一个类可以同时 implements 多个接口;

  2. 不能有构造方法,无法实例化;

  3. 成员变量默认 public static final(常量,必须初始化,不能修改);

  4. 抽象方法强制 public abstract;

  5. 设计目的:定义一套行为标准,不关心对象是什么,只关心能做什么,实现多态解耦。
    三、抽象类 vs 接口 核心对比表
    对比维度 抽象类 abstract class 接口 interface
    关键字 extends 单继承 implements 多实现
    构造方法 有,供子类初始化 无
    成员变量 普通变量、静态变量,可修改 只能 public static final 常量
    方法权限 任意修饰符(private/protected/public) 抽象方法强制 public
    静态方法 支持 支持,只能接口调用
    代码复用 可写完整通用方法,子类直接继承 Java8 default方法才支持复用
    设计定位 是什么(模板):描述一类事物共同属性+行为 能做什么(规范):拓展额外行为

四、使用场景区分

用抽象类:

多个子类有大量公共代码、共同属性,抽取公共模板。
例:Animal 抽象类,猫、狗、鸟都属于动物,共享睡觉、进食逻辑,只各自实现叫声。

用接口:

给类拓展无关的行为能力,不改变原有继承体系,实现多拓展。
例:Run 奔跑、Swim 游泳接口;猫会跑、鱼会游、人既能跑也能游泳,互不干扰。

五、关键记忆点

  1. 抽象类:类的模板,单继承,兼顾属性和行为;

  2. 接口:行为契约,多实现,只定义能力标准;

  3. 优先使用接口,只有大量公共代码复用的时候才用抽象类。

posted @ 2026-06-15 21:50  人青是个小卷毛  阅读(12)  评论(0)    收藏  举报