Java学习:抽象类与多态实现形状计算

需积分: 10 1 下载量 157 浏览量 更新于2024-07-26 收藏 126KB PPT 举报
"Java学习课程,面向对象编程中的抽象类及其应用" 在Java编程语言中,面向对象编程是核心概念之一。在这个课程中,你将深入理解类与接口的使用,特别是抽象类的重要角色。抽象类是面向对象设计中的一个重要组成部分,它允许我们定义一个不完整的类,即包含未实现的方法。这样的类不能被直接实例化,而是作为其他类的基类,这些子类必须实现抽象类中定义的所有抽象方法。 8.1.1 抽象类的定义 抽象类通过使用`abstract`关键字来标识。它可以包含普通成员变量和方法,同时也可以包含抽象方法。抽象方法没有方法体,只声明了方法的签名。例如: ```java abstract class 类名称 { 成员变量; 方法() {……} // 一般方法 abstract 方法(); // 抽象方法 } ``` 抽象类的主要目的是提供一个通用的模板,让其子类根据需要填充具体实现。抽象类自身不能被实例化,因为它可能缺少某些关键功能(抽象方法没有实现)。 8.1.2 抽象类的应用 抽象类的一个典型应用是设计一个包含共同特性的类层次结构。例如,我们可以定义一个名为`Shape`的抽象类,表示所有形状的通用属性,如计算面积。`Shape`类会有一个抽象方法`area()`,用于计算形状的面积,但不会给出具体的实现。 ```java abstract class Shape { abstract public double area(); // 抽象方法 } ``` 接下来,我们可以创建具体的形状类,如`Triangle`(三角形)、`Rectangle`(矩形)和`Circle`(圆形),它们都继承自`Shape`并实现`area()`方法: ```java class Triangle extends Shape { // 三角形的实现 } class Rectangle extends Shape { // 矩形的实现 } class Circle extends Shape { // 圆形的实现 } ``` 在`Test`类中,我们可以创建一个`Shape`类型的数组,并用不同形状的对象初始化它。然后,遍历数组并调用`area()`方法打印出每个形状的面积: ```java public class Test { public static void main(String[] args) { Shape[] s = new Shape[3]; s[0] = new Triangle(25, 41, 50); s[1] = new Rectangle(15, 20); s[2] = new Circle(47); for (int k = 0; k < s.length; k++) { System.out.println(s[k].area()); } } } ``` 这段代码展示了如何利用抽象类来实现多态性,即不同的对象(三角形、矩形、圆形)可以通过相同的接口(`area()`方法)进行操作,这正是面向对象编程的强大力量。 总结: - 抽象类是一个不能被实例化的类,用于定义共同特征和行为。 - 抽象类可以包含抽象方法,这些方法没有具体实现,必须由子类完成。 - 抽象类是实现多态性和类层次结构的基础,子类可以继承抽象类并实现抽象方法。 - 通过抽象类,我们可以定义通用接口,使得不同类型的对象能共享相同的行为,如上面示例中的形状计算面积。