java中abstract关键字定义抽象类的核心是“定契约、留实现”:用abstract class声明,不可实例化,可含普通成员和抽象方法;抽象方法无实现、以分号结尾,子类必须重写。

Java 中用 abstract 关键字定义抽象类,核心是:类声明加 abstract 修饰符,且至少包含一个抽象方法(或本身被声明为抽象类,即使没有抽象方法)。
抽象类的基本写法
抽象类不能被实例化,只能被继承。定义时在 class 前加上 abstract:
- 语法格式:
abstract class 类名 { ... } - 抽象方法不写方法体,以分号结尾,并用
abstract修饰(不能有private、final、static) - 抽象类中可以包含普通方法、成员变量、构造器、静态方法等
抽象方法必须由子类实现
子类继承抽象类后,有两种选择:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 子类也声明为
abstract,则无需实现父类的抽象方法 - 子类是具体类(非抽象),则必须重写(
@Override)所有未实现的抽象方法
例如:
abstract class Animal {abstract void makeSound(); // 抽象方法
void sleep() { System.out.println("Sleeping..."); } // 普通方法
}
class Dog extends Animal {
@Override
void makeSound() { System.out.println("Woof!"); } // 必须实现
}
抽象类可以有构造器和初始化逻辑
虽然不能直接 new 抽象类,但它的构造器会在子类创建对象时被调用(通过 super()):
- 用于初始化共有的字段或执行公共的初始化操作
- 子类构造器默认或显式调用父类抽象类的构造器
protected String brand;
Vehicle(String brand) { this.brand = brand; } // 抽象类的构造器
}
class Car extends Vehicle {
Car(String brand) { super(brand); } // 必须调用父类构造器
}
抽象类 vs 接口的关键区别
抽象类更适合表达“是什么”(is-a 关系),强调共性与继承层次:
- 支持单继承,但可实现多个接口
- 可含构造器、普通方法、成员变量(包括非 final)、静态方法
- 抽象方法默认
public,不能是private或static - 子类用
extends继承,不是implements
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










