java抽象如何创建
抽象类的创建
在Java中,抽象类通过abstract关键字声明。抽象类不能被实例化,主要用于作为其他类的基类,定义公共结构或强制子类实现特定方法。
abstract class Animal {
// 抽象方法,无实现体
public abstract void makeSound();
// 普通方法
public void sleep() {
System.out.println("Sleeping...");
}
}
抽象方法的定义
抽象方法没有方法体(即没有{}包裹的代码块),以分号结束。子类必须重写所有抽象方法,除非子类也是抽象类。
abstract class Shape {
// 抽象方法
public abstract double calculateArea();
}
继承抽象类
子类通过extends继承抽象类,并实现所有抽象方法。若子类未完全实现抽象方法,则子类必须声明为abstract。

class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
抽象类的用途
- 代码复用:抽象类可以包含已实现的方法,供子类直接使用。
- 多态支持:通过抽象类定义通用接口,子类实现具体行为。
- 强制规范:确保子类必须实现关键方法。
抽象类与接口的区别
| 特性 | 抽象类 | 接口 |
|---|---|---|
| 实例化 | 不能实例化 | 不能实例化 |
| 方法实现 | 可包含实现方法 | Java 8前只能有抽象方法 |
| 多继承 | 不支持(单继承) | 支持(多接口继承) |
| 成员变量 | 可以是任意类型 | 默认public static final |
实际示例
abstract class Employee {
private String name;
public Employee(String name) {
this.name = name;
}
public abstract double calculateSalary();
public String getName() {
return name;
}
}
class FullTimeEmployee extends Employee {
private double monthlySalary;
public FullTimeEmployee(String name, double monthlySalary) {
super(name);
this.monthlySalary = monthlySalary;
}
@Override
public double calculateSalary() {
return monthlySalary;
}
}






