您的位置:

Java抽象类

一、什么是抽象类

抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中可以包含抽象方法和非抽象方法。抽象方法是没有方法体的方法,必须在子类中实现。非抽象方法则是普通的方法,可以直接在抽象类中实现。

二、抽象类的作用

1、抽象类用于约束子类的行为,可以规定子类必须实现哪些方法。

public abstract class Animal {
    public abstract void eat();
    public abstract void sleep();
}

public class Cat extends Animal {
    public void eat() {
        System.out.println("Cat is eating...");
    }
    public void sleep() {
        System.out.println("Cat is sleeping...");
    }
}

public class Dog extends Animal {
    public void eat() {
        System.out.println("Dog is eating...");
    }
    public void sleep() {
        System.out.println("Dog is sleeping...");
    }
}

2、抽象类可以用于代码复用,可以将一些通用的方法和属性放在抽象类中。

public abstract class Shape {
    private String color;
    public Shape(String color) {
        this.color = color;
    }
    public String getColor() {
        return color;
    }
    public abstract double getArea();
}

public class Rectangle extends Shape {
    private double width;
    private double height;
    public Rectangle(String color, double width, double height) {
        super(color);
        this.width = width;
        this.height = height;
    }
    public double getArea() {
        return width * height;
    }
}

public class Circle extends Shape {
    private double radius;
    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

三、抽象类与接口的区别

1、抽象类可以包含抽象方法和非抽象方法,而接口只能包含抽象方法。

2、一个类只能继承一个抽象类,但是可以实现多个接口。

3、抽象类可以有构造方法,而接口不能有构造方法。

4、抽象类和接口都不能被实例化。

四、注意事项

1、抽象类中的抽象方法必须在子类中实现,否则子类也必须声明为抽象类。

2、抽象类中可以有非抽象方法的实现,这些方法可以被子类直接使用。

3、抽象类中可以包含变量和常量。

五、总结

抽象类是一种特殊的类,不能被实例化,只能被继承。抽象类用于约束子类的行为,可以规定子类必须实现哪些方法,也可用于代码复用。