📜  Java抽象类和抽象方法(1)

📅  最后修改于: 2023-12-03 15:02:04.712000             🧑  作者: Mango

Java抽象类和抽象方法

Java中的抽象类和抽象方法是面向对象编程中重要的概念之一。在本篇文章中,我将会向您介绍Java中的抽象类和抽象方法的概念、定义、语法和用法。

概念

抽象类是Java中一种不能被实例化的类。它的目的是为了被子类继承和实现。抽象类中可以包含抽象方法和具体方法。

抽象方法是一种没有具体实现的方法,必须在具体的子类中被实现。抽象方法只能存在于抽象类中。如果一个类继承了抽象类,那么它必须实现抽象类中的所有抽象方法。

定义

在Java中,我们使用abstract关键字来定义抽象类和抽象方法。

定义抽象类
public abstract class MyAbstractClass {
    // 抽象类中可以包含抽象方法和具体方法
    public abstract void myAbstractMethod();

    public void myMethod() {
        System.out.println("具体方法");
    }
}
定义抽象方法
public abstract void myAbstractMethod();
语法
抽象类
public abstract class MyAbstractClass {
    // 抽象方法
    public abstract void myAbstractMethod();

    // 具体方法
    public void myMethod() {
        System.out.println("具体方法");
    }
}
抽象方法
public abstract void myAbstractMethod();
用法
继承抽象类
public class MyConcreteClass extends MyAbstractClass {

    // 必须实现抽象方法
    @Override
    public void myAbstractMethod() {
        System.out.println("子类实现抽象方法");
    }

    // 可以覆盖具体方法
    @Override
    public void myMethod() {
        System.out.println("子类覆盖具体方法");
    }
}
实例化抽象类

不能实例化抽象类。这将会导致编译时错误。

MyAbstractClass myAbstractClass = new MyAbstractClass(); // 报错

但是,我们可以声明一个抽象类的引用变量,并将其赋值给一个子类对象。

MyAbstractClass myAbstractClass = new MyConcreteClass();
作为参数或返回值

抽象类可以作为方法的参数或返回值类型。

public void myMethod(MyAbstractClass myAbstractClass) {
    // ...
}

public MyAbstractClass myMethod() {
    // ...
}
总结

Java中的抽象类和抽象方法提供了一种非常方便的方式来定义具备一定规范的类和方法。通过使用抽象类,我们可以建立一种基础的架构,并且允许其他人扩展和实现这些基础代码。