📜  java abstract 修饰符 - Java (1)

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

Java Abstract 修饰符

在 Java 中,abstract 是一个修饰符,它可以用来修饰类和方法。abstract 类不能被实例化,而 abstract 方法需要在子类中被实现。

Abstract Class

抽象类是一种特殊的类,它不能被实例化,其作用是为了被子类继承。抽象类通常包含一些抽象方法,这些方法需要在子类中被具体实现。抽象类中也可以包含一些非抽象方法,这些方法可以被子类直接继承和调用。

定义一个抽象类,需要用 abstract 关键字来修饰,例如:

public abstract class Animal {
    abstract void run();
    void sleep() {
        System.out.println("睡觉中...");
    }
}

在上面的例子中,Animal 类是一个抽象类,其中包含一个抽象方法 run() 和一个非抽象方法 sleep()。抽象方法没有方法体,子类必须实现该方法。

public class Dog extends Animal {
    void run() {
        System.out.println("狗在奔跑...");
    }
}

在上面的例子中,Dog 类继承自 Animal 类,并实现了 run() 方法。Dog 类可以直接调用 sleep() 方法,因为它已经被继承了。

Abstract Method

抽象方法是一种没有实现的方法,它需要在子类中被具体实现。抽象方法的语法和普通方法类似,只是需要用 abstract 关键字来修饰,并省略方法体。例如:

public abstract class Shape {
    abstract double getArea();
}

在上面的例子中,Shape 类包含一个抽象方法 getArea(),该方法没有具体实现。子类必须实现 getArea() 方法,否则子类也必须是抽象类。

public class Rectangle extends Shape {
    private double width;
    private double height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    double getArea() {
        return width * height;
    }
}

在上面的例子中,Rectangle 类继承自 Shape 类,并实现了 getArea() 方法。如果 Rectangle 类没有实现 getArea() 方法,那么它也必须是抽象类。

总结
  • abstract 是一个修饰符,可以用来修饰类和方法。
  • 抽象类不能被实例化,需要被子类继承。抽象类通常包含一些抽象方法,需要在子类中被具体实现。
  • 抽象方法是一种没有具体实现的方法,需要在子类中被实现。如果一个类包含抽象方法,那么它必须是抽象类。
  • 抽象类和抽象方法的作用是为了让程序员在设计类的继承关系时更加灵活。