抽象类
目录
抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
在 Java 语言中使用 abstract class 来定义抽象类。如下实例:
// 定义一个抽象类Shape
abstract class Shape {
// 抽象方法,没有实现体
public abstract void draw();
}
// 定义一个继承自Shape的子类Circle
class Circle extends Shape {
// 实现父类中的抽象方法
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
// 定义一个继承自Shape的子类Rectangle
class Rectangle extends Shape {
// 实现父类中的抽象方法
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
// 测试类
public class TestAbstractClass {
public static void main(String[] args) {
// 创建Circle对象
Shape circle = new Circle();
circle.draw();
// 创建Rectangle对象
Shape rectangle = new Rectangle();
rectangle.draw();
}
}
抽象类的好处
抽象类的好处主要体现在以下几个方面:
1. 代码复用与简化
- 模板化实现:抽象类提供了一种模板化的实现方式,通过定义通用的属性和方法,使得子类可以继承这些共同的属性和方法,从而减少重复代码,提高代码复用性。
- 简化设计:抽象类可以将具有共同特征和行为的类进行抽象,简化代码的设计和维护。它作为类层次结构中的顶层类,定义了通用的属性和方法,子类可以继承并实现具体的功能。
2. 强制实现特定方法
- 约束子类行为:抽象类可以定义抽象方法,要求子类必须实现这些方法,从而约束子类的行为。这有助于确保子类遵循一定的接口规范,实现相应的功能。
- 提高代码一致性:通过定义抽象方法,可以确保子类具有相同的方法签名,提高代码的一致性和可预测性。
3. 隐藏实现细节
- 提高封装性:抽象类可以将一些共同的实现细节放在抽象类中,对子类隐藏起来,从而提高代码的封装性和安全性。
4. 支持扩展性和灵活性
- 扩展方式:抽象类提供了一种扩展的方式,当需要在类层次结构中添加新的功能时,可以通过继承抽象类并实现抽象方法来完成。这种方式比直接修改已有类更加灵活,并能保持较好的代码组织结构。
- 多重继承效果:一个类可以同时继承一个抽象类并实现多个接口,从而实现多重继承的效果,提高代码的灵活性和可扩展性。
5. 公共服务功能
- 提供公共服务:抽象类可以包含非抽象方法,这些方法有具体的实现。子类可以直接继承和使用这些非抽象方法,实现一些公共服务功能,提高代码的复用性。
6. 稳定的抽象层依赖
- 便于架构复用:抽象类可以建立稳定的抽象层依赖,便于架构层面的整体复用。通过定义稳定的抽象层,可以在不修改现有代码的基础上,通过添加新的子类来扩展系统的功能。
综上所述,抽象类在面向对象编程中扮演着重要的角色,它通过提供模板化实现、强制实现特定方法、隐藏实现细节、支持扩展性和灵活性、提供公共服务功能以及建立稳定的抽象层依赖等方式,极大地提高了代码的可维护性、复用性、一致性和可扩展性。
标签:Java,实现,子类,学习,Shape,抽象,抽象类,方法 From: https://www.cnblogs.com/BingBing-8888/p/18390271