java中接口用interface定义,所有方法默认public abstract、字段默认public static final,支持default/static方法;抽象类用abstract class定义,可含抽象/具体方法、构造器和各种成员变量;接口体现“能做什么”,抽象类体现“是什么”。

Java 中接口与抽象类的定义方式不同,核心在于用途和语法规范。
接口怎么定义
用 interface 关键字声明,所有方法默认是 public abstract,所有字段默认是 public static final。
- 接口不能有构造方法,也不能被实例化
- 方法不写
abstract也能自动识别为抽象方法(Java 8 前) - Java 8 起支持
default方法和static方法,可带方法体 - 一个类通过
implements实现接口,必须重写全部抽象方法(除非该类本身是抽象类)
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
public interface Drawable {
int MAX_SIZE = 100; // 自动 public static final
void draw(); // 自动 public abstract
default void resize() { // Java 8+ default 方法
System.out.println("Resizing...");
}
}
抽象类怎么定义
用 abstract class 声明,可以含抽象方法,也可以含具体实现的方法、普通字段、构造器等。
- 抽象类不能被直接实例化,只能被继承
- 子类继承抽象类,必须实现所有抽象方法,否则子类也得声明为
abstract - 抽象类中可以有
private、protected成员,也可有构造方法(供子类调用) - 抽象方法必须用
abstract修饰,且不能有方法体(无{})
示例:
public abstract class Shape {
protected String name;
public Shape(String name) {
this.name = name;
}
public abstract double area(); // 抽象方法:无实现
public void printName() { // 具体方法:可直接使用
System.out.println("Shape: " + name);
}
}
关键区别一句话总结
抽象类回答“它是什么”,强调类的共性与继承关系;接口回答“它能做什么”,强调行为契约与能力组合。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










