不一定。在抽象类中,可以包含抽象方法和非抽象方法。抽象方法是指只有方法签名而没有具体实现的方法,它们没有方法体。抽象方法必须在具体的子类中实现。而非抽象方法是有具体实现的方法,它们可以在抽象类中直接定义并提供默认实现,子类可以选择性地覆盖这些非抽象方法。
抽象类是为了充当其他类的基类而设计的,它可以定义一些共同的属性和方法,并强制要求子类实现某些方法。子类继承抽象类后,必须实现其中的抽象方法,而非抽象方法可以直接使用或者根据需要进行覆盖。
下面是一个示例,展示了抽象类中既包含抽象方法又包含非抽象方法的情况:
abstract class AbstractClass {
// 抽象方法
public abstract void abstractMethod();
// 非抽象方法
public void nonAbstractMethod() {
System.out.println("This is a non-abstract method.");
}
}
class ConcreteClass extends AbstractClass {
// 实现抽象方法
public void abstractMethod() {
System.out.println("This is an implementation of the abstract method.");
}
}
public class Main {
public static void main(String[] args) {
ConcreteClass obj = new ConcreteClass();
obj.abstractMethod();
obj.nonAbstractMethod();
}
}
在上面的例子中,`AbstractClass`是抽象类,其中包含一个抽象方法`abstractMethod()`和一个非抽象方法`nonAbstractMethod()`。`ConcreteClass`是`AbstractClass`的子类,必须实现抽象方法`abstractMethod()`,同时可以继承和使用非抽象方法`nonAbstractMethod()`。