📜  java 抽象与接口 - Java (1)

📅  最后修改于: 2023-12-03 14:42:18.894000             🧑  作者: Mango

Java 抽象与接口

简介

在 Java 中,抽象类和接口是面向对象编程的重要概念。它们用于实现代码的抽象和封装,以提高代码的可维护性和重用性。本文将介绍 Java 中抽象类和接口的概念、特点以及如何使用它们。

抽象类

Java 中的抽象类是一种特殊的类,它不能被实例化,但可以被继承。抽象类用于表示一种抽象的概念,其中定义了一组共享的属性和方法。抽象类可以包含普通方法、抽象方法、静态方法和静态变量。

定义抽象类
public abstract class AbstractClass {
    // 普通方法
    public void doSomething() {
        System.out.println("Doing something...");
    }

    // 抽象方法
    public abstract void abstractMethod();
}
  • 抽象类使用 abstract 关键字进行声明。
  • 抽象类可以包含普通方法的实现和抽象方法的声明。
  • 抽象方法使用 abstract 关键字进行声明,无需提供实现。
继承抽象类
public class ConcreteClass extends AbstractClass {
    // 实现抽象方法
    @Override
    public void abstractMethod() {
        System.out.println("Implementing abstractMethod...");
    }
}
  • 子类必须实现抽象类中的所有抽象方法,除非子类也声明为抽象类。
接口

接口是 Java 中一种特殊的引用类型,它定义了一组抽象方法和常量。接口可以被类实现,一个类可以实现多个接口。

定义接口
public interface InterfaceName {
    // 常量
    int CONSTANT_VALUE = 100;

    // 抽象方法
    void abstractMethod();
}
  • 接口使用 interface 关键字进行声明。
  • 接口中可以包含常量和抽象方法。
  • 常量默认为 public static final,可以直接通过接口名访问。
  • 抽象方法默认为 public abstract,实现类必须提供具体实现。
实现接口
public class ClassName implements InterfaceName {
    // 实现抽象方法
    @Override
    public void abstractMethod() {
        System.out.println("Implementing abstractMethod...");
    }
}
  • 类使用 implements 关键字来实现一个或多个接口。
  • 实现类必须实现接口中的所有抽象方法。
抽象类 vs 接口
  • 抽象类可以包含属性和方法的实现,而接口只能包含常量和抽象方法的声明。
  • 一个类只能继承一个抽象类,但可以实现多个接口。
  • 抽象类用于表示 is-a 关系,接口用于表示 has-a 关系。
  • 抽象类适用于较大的、具有共同行为的类层次结构,接口适用于实现某些功能的类。
总结

抽象类和接口是 Java 面向对象编程的重要工具,它们帮助我们进行代码的抽象和封装。抽象类适用于表示共享属性和方法的类,而接口适用于实现某种功能的类。通过继承抽象类和实现接口,我们可以更好地组织和管理代码,提高代码的可维护性和重用性。