亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 抽象详解:抽象类、抽象方法与实战代码

什么是 Java 抽象?

在 Java 中,抽象仅暴露对象的本质特征,隐藏与用户无关的内部实现细节。它通过减少复杂度和工作量简化开发。抽象通过 抽象类、抽象方法 和 接口 实现,是 Java 面向对象设计的核心概念。

本教程你将学到:

理解抽象类

抽象类 是不能直接实例化但可为相关子类定义公共基类的类。它可同时包含抽象方法(无方法体)和具体方法(完整实现)。抽象类的定义特征是至少声明一个抽象方法,或出于设计原因显式标记为 abstract。

以许多 Java 教程使用的经典 Shape 层级为例:

Java 抽象详解:抽象类、抽象方法与实战代码

Shape 类包含共享属性和 calculateArea() 方法签名,而 Rectangle、Circle、Triangle 提供具体实现。虽然理论上 Shape 可实例化,但语义上无意义且可能导致错误,因此声明为 abstract:

abstract class Shape {
    // 共享代码
}

什么是抽象方法?

抽象方法 仅声明方法签名而不提供实现。它必须定义在抽象类中,并由具体子类重写。因无方法体,不能标记为 final 或 static。

语法示例:

abstract public void calculateArea();

在 Shape 示例中,每个子类必须用自己的公式实现 calculateArea(),确保每个形状都能报告面积,同时保持公共接口完整。

实战代码示例

abstract class Shape {
    abstract void calculateArea();
}
class Rectangle extends Shape {
    void calculateArea() {
        System.out.println("Area of Rectangle");
    }
    public static void main(String[] args) {
        Shape obj = new Rectangle();
        obj.calculateArea();
    }
}

抽象类关键要点

Java final 关键字

final 修饰符用于锁定类、方法或变量,使其不能被覆盖或修改:

示例:结合 Abstract 和 Final

abstract class Shape {
    final int b = 20;
    public void display() {
        System.out.println("This is display method");
    }
    abstract public void calculateArea();
}
public class Rectangle extends Shape {
    public static void main(String[] args) {
        Rectangle obj = new Rectangle();
        obj.display();
        // obj.b = 200; // 编译时错误:不能给 final 变量赋值
    }
    @Override
    public void calculateArea() {
        System.out.println("Calculating rectangle area");
    }
}

取消注释 calculateArea() 实现可解决编译错误,而尝试修改 b 演示了 final 变量的不可变性。

抽象方法规则

java

  1. 掌握 C# 抽象类与抽象方法:实战指南
  2. C++ 类与对象实战指南:封装、构造函数、析构函数与访问控制
  3. C# 抽象类实战教程:从定义到派生的完整代码示例
  4. Java 抽象类与抽象方法完全指南
  5. Java String length() 方法:获取字符串长度(示例)
  6. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  7. Java String.contains() 方法:检查子字符串是否存在(实战示例)
  8. 精通 Java String.endsWith():检查字符串后缀(示例)
  9. Java 接口 vs 抽象类:如何选择合适的抽象方式
  10. Java BufferedReader 读取文件:实战指南与示例
  11. Java 插入排序算法详解:核心原理、完整代码与步骤演示
  12. Java 抽象类与抽象方法:规范契约、强制实现与模板模式