In Java, an abstract class is a class that cannot be instantiated and is used to provide a common interface or implementation for its subclasses.
An abstract class can contain both abstract and non-abstract methods. Abstract methods are methods that do not have an implementation, and they must be overridden by a subclass. Non-abstract methods are methods that have an implementation and can be used by a subclass.
Here is an example of an abstract class in Java:
public abstract class Shape {
private String color;
public Shape(String color) {
this.color = color;
}
public String getColor() {
return color;
}
public abstract double getArea();
}
In this example, the Shape class is an abstract class that contains a non-abstract method getColor and an abstract method getArea.
The getColor method has an implementation and can be used by a subclass, while the getArea method does not have an implementation and must be overridden by a subclass.
To create a subclass of an abstract class, you must use the extends keyword and override any abstract methods of the superclass.
Here is an example of a subclass that extends the Shape abstract class and overrides the getArea method:
public class Circle extends Shape {
private double radius;
public Circle(String color, double radius) {
super(color);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
In this example, the Circle class is a subclass of the Shape class, and it overrides the getArea method.